<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.2.2" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>Xnoccio &#187; Javier Echeverría Usua</title>
	<link>http://xnoccio.com</link>
	<description>Blog de Viavansi</description>
	<pubDate>Tue, 23 Feb 2010 18:58:59 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.2</generator>
	<language>en</language>
			<item>
		<title>Arranca la nueva web de la Consejería de Turismo, Comercio y Deporte</title>
		<link>http://xnoccio.com/511-arranca-la-nueva-web-de-la-consejeria-de-turismo-comercio-y-deporte/</link>
		<comments>http://xnoccio.com/511-arranca-la-nueva-web-de-la-consejeria-de-turismo-comercio-y-deporte/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 06:41:06 +0000</pubDate>
		<dc:creator>Javier Echeverría Usua</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://xnoccio.com/511-arranca-la-nueva-web-de-la-consejeria-de-turismo-comercio-y-deporte/</guid>
		<description><![CDATA[Nuestros compañeros de OpenCms han sacado el nuevo sitio web de la Consejería de Turismo, Comercio y Deporte de la Junta de Andalucía. Ha sido un duro proyecto trabajado en equipo entre el personal de VIAVANSI (enhorabuena Tino, Carlos, Antonio, Cristina, Javi, Álvaro, Juan, Enrique, Fernando, Silvia, Diego&#8230;) y el del cliente, que ha trabajado [...]]]></description>
			<content:encoded><![CDATA[<p>Nuestros compañeros de OpenCms han sacado el <a href="http://www.juntadeandalucia.es/turismocomercioydeporte/opencms/" title="Web CTCD" target="_blank">nuevo sitio web de la Consejería de Turismo, Comercio y Deporte de la Junta de Andalucía</a>. Ha sido un duro proyecto trabajado en equipo entre el personal de VIAVANSI (enhorabuena Tino, Carlos, Antonio, Cristina, Javi, Álvaro, Juan, Enrique, Fernando, Silvia, Diego&#8230;) y el del cliente, que ha trabajado como un miembro más del equipo. Gracias por ello a Joaquín Vázquez, Mercedes Soto, Manolo Martín Matas, Alberto Díaz, Pepe Campos, etc. etc.).</p>
<p>El portal la verdad es que mejora mucho al anterior, y dentro de las férreos marcos que rodean a los sitios web de las instituciones públicas, introduce algunos conceptos que, si bien son comunes en otro tipo de portales, resultan innovadores en un sitio oficial; por ejemplo, la zona más expuesta al público y central la ocupan una serie de vídeos multimedia servidos vía streaming.</p>
<p>El portal ha sido desarrollado bajo tecnología OpenCms 7.0.4 / Oracle.</p>
<p>Le deseamos una excelente andadura al nuevo portal.</p>
]]></content:encoded>
			<wfw:commentRss>http://xnoccio.com/511-arranca-la-nueva-web-de-la-consejeria-de-turismo-comercio-y-deporte/feed/</wfw:commentRss>
		</item>
		<item>
		<title>[Humor] Nuevo logo para Java EE</title>
		<link>http://xnoccio.com/509-humor-nuevo-logo-para-java-ee/</link>
		<comments>http://xnoccio.com/509-humor-nuevo-logo-para-java-ee/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 06:28:23 +0000</pubDate>
		<dc:creator>Javier Echeverría Usua</dc:creator>
		
		<category><![CDATA[java]]></category>

		<category><![CDATA[Frikadas]]></category>

		<guid isPermaLink="false">http://xnoccio.com/509-humor-nuevo-logo-para-java-ee/</guid>
		<description><![CDATA[Dice la competencia que después de la fusión entre Sun y Oracle tal vez el nuevo logo de Java EE vaya a ser como el que sigue:

]]></description>
			<content:encoded><![CDATA[<p>Dice la competencia que después de la fusión entre Sun y Oracle tal vez el nuevo logo de Java EE vaya a ser como el que sigue:</p>
<p><a href="http://xnoccio.com/wp-content/uploads/2009/07/java-ee-small.png" title="Logo Evil Java EE"><img src="http://xnoccio.com/wp-content/uploads/2009/07/java-ee-small.png" alt="Logo Evil Java EE" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://xnoccio.com/509-humor-nuevo-logo-para-java-ee/feed/</wfw:commentRss>
		</item>
		<item>
		<title>VIAVANSI abre su canal Twitter</title>
		<link>http://xnoccio.com/460-viavansi-abre-su-canal-twitter/</link>
		<comments>http://xnoccio.com/460-viavansi-abre-su-canal-twitter/#comments</comments>
		<pubDate>Sat, 25 Apr 2009 13:40:06 +0000</pubDate>
		<dc:creator>Javier Echeverría Usua</dc:creator>
		
		<category><![CDATA[viavansi]]></category>

		<category><![CDATA[Frikadas]]></category>

		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://xnoccio.com/460-viavansi-abre-su-canal-twitter/</guid>
		<description><![CDATA[Con el título de este post poco más hay que explicar :-)
En la URL http://twitter.com/viavansi tenéis ya disponible el Twitter corporativo de VIAVANSI. A través de los tweets pondremos a disposición de todos noticias informales del día a día de nuestra empresa, el sector TIC, etc.
Invitamos a todos nuestros lectores a ser followers!
Namasté.
]]></description>
			<content:encoded><![CDATA[<p>Con el título de este post poco más hay que explicar :-)</p>
<p>En la URL <a href="http://twitter.com/viavansi" title="http://twitter.com/viavansi" target="_blank">http://twitter.com/viavansi</a> tenéis ya disponible el Twitter corporativo de VIAVANSI. A través de los tweets pondremos a disposición de todos noticias informales del día a día de nuestra empresa, el sector TIC, etc.</p>
<p>Invitamos a todos nuestros lectores a ser <em>followers</em>!</p>
<p>Namasté.</p>
]]></content:encoded>
			<wfw:commentRss>http://xnoccio.com/460-viavansi-abre-su-canal-twitter/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Viafirma 2.2: Soporte de integración con @Firma</title>
		<link>http://xnoccio.com/454-viafirma-22-soporte-de-integracion-con-firma/</link>
		<comments>http://xnoccio.com/454-viafirma-22-soporte-de-integracion-con-firma/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 13:07:12 +0000</pubDate>
		<dc:creator>Javier Echeverría Usua</dc:creator>
		
		<category><![CDATA[viafirma]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[viavansi]]></category>

		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://xnoccio.com/454-viafirma-22-soporte-de-integracion-con-firma/</guid>
		<description><![CDATA[Aunque pueda parecer sorprendente, una de las principales novedades de la próxima versión 2.2 de Viafirma, que va a ser liberada en pocos días, es su integración con la plataforma @Firma v5.

Para el lector que no conozca @Firma (también conocido como aFirma), se trata de una plataforma de similares características funcionales a Viafirma, teniendo como [...]]]></description>
			<content:encoded><![CDATA[<p>Aunque pueda parecer sorprendente, una de las principales novedades de la próxima versión 2.2 de <a href="http://www.viafirma.com" title="Link a la web de VIAFIRMA">Viafirma</a>, que va a ser liberada en pocos días, es su integración con la plataforma @Firma v5.</p>
<p><a href="http://xnoccio.com/wp-content/uploads/2009/04/imagen-2.png" title="Screenshot de sistema de información utilizando el bridge Viafirma/@Firma"><img src="http://xnoccio.com/wp-content/uploads/2009/04/imagen-21.png" alt="Screenshot de sistema de información utilizando el bridge Viafirma/@Firma" border="0" height="251" width="420" /></a></p>
<p>Para el lector que no conozca @Firma (también conocido como aFirma), se trata de una plataforma de similares características funcionales a Viafirma, teniendo como principales responsabilidades el facilitar a terceras aplicaciones (que se integran con @Firma a través de un API cliente) el soporte de autenticación y firma digital con certificados digitales. Su desarrollo <a href="https://ws024.juntadeandalucia.es/pluton/adminelec/ArTec/afirma.jsp?zona=9&amp;&amp;#general" title="Link a Pluton - @Firma" target="_blank">fue dirigido por la Junta de Andalucía, donde es la plataforma corporativa de autenticación y firma digital</a>, y también así <a href="http://http://www.csi.map.es/csi/pg5a12.htm" title="Link a la ficha del MAP del proyecto afirma" target="_blank">ha sido escogida por el MAP (Ministerio de Administraciones Públicas) como su herramienta base</a> para este tipo de funcionalidades, cediendo su uso a cualquier de Administración Pública española. Hablamos por ello sin ninguna duda de una plataforma con una gran relevancia en el mercado y un más que importante número de implantaciones.</p>
<p>¿Por qué comentamos que &#8220;puede parecer sorprendente&#8221; esta nueva funcionalidad de Viafirma?  Pues porque, como el lector habrá advertido, en principio Viafirma y @Firma &#8220;se dedican a lo mismo&#8221;, es decir, a facilitar a aplicaciones el soporte de autenticación y firma electrónica. Entonces, ¿para qué integrar ambas plataformas?</p>
<p>La idea de su integración surge de la posibilidad de aislar responsabilidades dentro del proceso de autenticación y firma digital, haciendo que ambas plataformas interoperen en un ambiente SOA y se encarguen cada una de las funcionalidades en las que destacan. En nuestra empresa, <a href="http://www.viavansi.com" title="Link a la web de Viavansi" target="_blank">VIAVANSI</a>, hemos desarrollado una gran multitud de aplicaciones que se integran con @Firma para la Junta de Andalucía. Quizás podríamos destacar algunas debilidades que bajo nuestro punto de vista hemos advertido en esta plataforma:</p>
<ul>
<li>Su matriz de compatibilidad (<a href="https://ws024.juntadeandalucia.es/pluton/adminelec/descargas/descargar.jsp?iddescarga=5202" title="Link a la matriz de compatibilidad de @firma en Pluton" target="_blank">a día de hoy la última es consultable en este enlace del portal Pluton de la Junta de Andalucía</a>) es relativamente reducida para la Administración Pública, que busca poder dar servicio al 100% de la ciudadanía. Se quedan por ejemplo fuera de ella usuarios de Mac (como el que escribe), hemos observado problemas en función de las versiones de JRE, no hay actualmente soporte de Firefox 3, etc.</li>
<li>La apariencia (look&amp;feel) del cliente es mejorable.</li>
<li>Cada aplicación que se integre con @Firma debe disponer en sus librerías del cliente de @Firma, y desarrollar código para utilizar dicho cliente. Ello implica que, cada vez que hay una actualización de este cliente de @Firma, hay que realizar un esfuerzo bastante importante de mantenimiento de aplicaciones para introducir el nuevo cliente, realizar los cambios que sean necesarios, probar y desplegar de nuevo las aplicaciones, etc.</li>
</ul>
<p>Precisamente, esas debilidades son de hecho puntos fuertes de Viafirma, que la hacen sin duda destacar. Tal vez por ser una plataforma de desarrollo más reciente, Viafirma dispone de una enorme matriz de compatibilidad, pudiendo operar en prácticamente cualquier combinación de sistema operativo / navegador / versión de Java Runtime Environment (JRE) / autoridad de certificación / disposición del certificado (software, tarjeta -DNIe-, token)&#8230; Por ejemplo, firma en Mac sin problemas :-) Como ejemplo, en las dos primeras semanas de funcionamiento en la aplicación de &#8220;Acciones formativas de las Empresas&#8221; de la Fundación Tripartita para la Formación en el Empleo se superaron las 300.000 operaciones de autenticación y firma digital sin apenas incidencias. De hecho, el sistema &#8220;Acciones formativas de las Empresas&#8221; es probablemente, junto a las aplicaciones de Renta de la Agencia Tributaria, la aplicación pública con más operaciones de firma digital de España, ya que prácticamente cualquier empresa española puede ser usuaria del sistema.</p>
<p>Por otro lado, Viafirma incluye un concepto &#8220;push&#8221; de su cliente de firma, lo cual es una ventaja crucial para la estrategia de mantenimiento de aplicaciones. La librería cliente reside en un único nodo central (servidor de Viafirma), de forma que cuando se libera una nueva versión de dicha librería, sólo se debe realizarse la actualización en ese nodo. Todas las aplicaciones que utilicen el cliente quedan en ese momento automáticamente actualizadas, reduciéndose así enormemente el impacto de los nuevos desarrollos. Sin duda se evitan así fallos de actualización difícilmente controlables, redundando finalmente todas estas ventajas en la ciudadanía, que en todo caso es -somos- los usuarios de estos sistemas.</p>
<p>Esta nueva característica de Viafirma 2.2 permite utilizar la plataforma para las operaciones más relacionadas con el usuario de la aplicación (la detección y lectura de certificados,  y la operación de firma digital en local). Viafirma se comunica con los API&#8217;s Web Services nativos de @Firma para el resto de operaciones de núcleo: la validación de certificados con las CRL&#8217;s o servicios OCSP de las diversas autoridades de certificación, la custodia de los documentos firmados, etc.</p>
<p><a href="http://xnoccio.com/wp-content/uploads/2009/04/viafirma_afirma.png" title="Diagrama de arquitectura"><img src="http://xnoccio.com/wp-content/uploads/2009/04/viafirma_afirma.png" alt="Diagrama de arquitectura" border="0" height="276" width="469" /></a></p>
<p>De esta forma, se consigue una integración rápida y no intrusiva en &#8220;modo bridge&#8221;. Se podría decir que Viafirma se encarga de la &#8220;capa de cliente&#8221; del proceso, interactuando con el usuario y su almacén de certificados, y @Firma se encarga de la &#8220;capa de servidor&#8221;, responsabilizándose de la conexión con las diversas CA&#8217;s, la custodia de las firmas (opcionalmente), etc.</p>
<p>Las ventajas de este escenario son así muchas:</p>
<ul>
<li>Las instituciones disponen de un<em> cliente de firma universal</em>, que soporta prácticamente cualquier combinación de sistema operativo (Windows, incluyendo incluso la beta de Windows 7, Linux, Mac OS), navegador (Internet Explorer -6, 7 e incluso a nueva versión 8&#8230;-, Firefox-incluyendo la versión 3-, Safari, Google Chrome&#8230;), versión de JRE (5, 6, etc.), CA&#8217;s (FNMT, DNI-e, Camerfirma, ANCERT, Izenpe, Firma Profesional, ANF-AC, etc.), disposiciones (software, tarjeta incluyendo DNI-e, token, etc.)&#8230; La matriz de compatibilidad se ve ampliada en una gran magnitud, resultando principalmente favorecida la ciudadanía.</li>
<li>El cliente de firma de Viafirma soporta incluso la utilización de un certificado exportado en formato P12 (formato de exportación usual en Linux o Mac) o PFX (este último típico de Windows), sin necesidad de importarlo en el almacén de certificados del sistema operativo o navegador. Un típico caso de uso sería, por ejemplo, que tengamos nuestro certificado personal exportado en un pendrive USB y queramos realizar una operación de autenticación o firma digital en un ciber-café, donde tal vez no tengamos permisos para instalar el certificado (o simplemente no lo deseemos por motivos de seguridad). El usuario puede escoger la ubicación del fichero P12 o PFX de una ruta local (como por ejemplo en ese pendrive), y utilizarlo así como si el certificado estuviese instalado en la máquina.</li>
<li>Se <em>reduce enormemente el coste de mantenimiento de aplicaciones</em>, ya que como se ha comentado anteriormente el cliente de firma sólo reside en un nodo central y la actualización de versiones del cliente se realiza de forma automática en las aplicaciones.</li>
<li>La institución mantiene su instalación de @Firma plenamente operativa, y en ella reside precisamente la responsabilidad de ejecutar operaciones críticas como la validación de los certificados (revocados, caducados, conexión a CRL&#8217;s y servicios OCSP, etc.), custodia de los documentos firmados, y en general, toda la lógica de servidor. Eso sí, la custodia podría ser opcional si se desea que los ficheros y/o sus firmas digitales sean custodiados por la aplicación o incluso por Viafirma, que soporta custodia en sistemas NFS, en ECM&#8217;s como Alfresco, y incluso en campos de base de datos tipo LOB.</li>
<li>Se crea una disposición plenamente coherente con una política de interoperabilidad entre plataformas basadas en arquitecturas SOA, aprovechando los puntos fuertes de cada una de ellas, dispuestos a modo de servicio.</li>
</ul>
<p>La nueva versión 2.2 de Viafirma además soporta el formato CMS y el formato 3.1 de factura-e e incluye otras actualizaciones menores.</p>
]]></content:encoded>
			<wfw:commentRss>http://xnoccio.com/454-viafirma-22-soporte-de-integracion-con-firma/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Nueva versión de Maven 2.1.0</title>
		<link>http://xnoccio.com/445-nueva-version-de-maven-210/</link>
		<comments>http://xnoccio.com/445-nueva-version-de-maven-210/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 22:44:55 +0000</pubDate>
		<dc:creator>Javier Echeverría Usua</dc:creator>
		
		<category><![CDATA[java]]></category>

		<category><![CDATA[programación]]></category>

		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://xnoccio.com/445-nueva-version-de-maven-210/</guid>
		<description><![CDATA[Acaba de salir publicada la nueva versión 2.1.0 de Maven. Se pueden consultar las modificaciones incluidas en las Release Notes de la versión.
Está calentito calentito; esta misma semana empezamos a trabajar con esta versión, e iremos comentando las novedades que vemos. De momento os puedo anticipar que por fin las contraseñas almacenadas en el settings.xml [...]]]></description>
			<content:encoded><![CDATA[<p>Acaba de salir publicada la <a href="http://maven.apache.org/download.html" target="_blank">nueva versión 2.1.0 de Maven</a>. Se pueden consultar las modificaciones incluidas en las <a href="http://maven.apache.org/release-notes.html" target="_blank">Release Notes</a> de la versión.</p>
<p>Está calentito calentito; esta misma semana empezamos a trabajar con esta versión, e iremos comentando las novedades que vemos. De momento os puedo anticipar que por fin las contraseñas almacenadas en el settings.xml están ofuscadas :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://xnoccio.com/445-nueva-version-de-maven-210/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Viafirma ya soporta Internet Explorer 8</title>
		<link>http://xnoccio.com/442-viafirma-ya-soporta-internet-explorer-8/</link>
		<comments>http://xnoccio.com/442-viafirma-ya-soporta-internet-explorer-8/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 20:37:46 +0000</pubDate>
		<dc:creator>Javier Echeverría Usua</dc:creator>
		
		<category><![CDATA[viafirma]]></category>

		<category><![CDATA[viavansi]]></category>

		<guid isPermaLink="false">http://xnoccio.com/442-viafirma-ya-soporta-internet-explorer-8/</guid>
		<description><![CDATA[Como muchos de nuestros lectores sabrán, el día 19/03/2009 a las 18h se vio publicada la nueva versión 8 del navegador de Microsoft, Internet Explorer.
Viafirma ya soporta la autenticación y firma digital con el nuevo Internet Explorer 8, del mismo modo que es 100% compatible con las versiones beta publicadas de Windows 7.
Adjuntamos una captura [...]]]></description>
			<content:encoded><![CDATA[<p>Como muchos de nuestros lectores sabrán, el día 19/03/2009 a las 18h se vio publicada la nueva versión 8 del navegador de Microsoft, Internet Explorer.</p>
<p>Viafirma ya soporta la autenticación y firma digital con el nuevo Internet Explorer 8, del mismo modo que es 100% compatible con las versiones beta publicadas de Windows 7.</p>
<p>Adjuntamos una captura de pantalla con una operación satisfactoria de firma realizada sobre este navegador.</p>
<p><a href="http://xnoccio.com/wp-content/uploads/2009/03/viafirma_ie8.png" title="Viafirma firmando en IE8"><img src="http://xnoccio.com/wp-content/uploads/2009/03/viafirma_ie8.png" alt="Viafirma firmando en IE8" height="235" width="399" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://xnoccio.com/442-viafirma-ya-soporta-internet-explorer-8/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Viafirma entra en producción en la Fundación Tripartita</title>
		<link>http://xnoccio.com/439-viafirma-entra-en-produccion-en-la-fundacion-tripartita/</link>
		<comments>http://xnoccio.com/439-viafirma-entra-en-produccion-en-la-fundacion-tripartita/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 09:13:07 +0000</pubDate>
		<dc:creator>Javier Echeverría Usua</dc:creator>
		
		<category><![CDATA[viafirma]]></category>

		<category><![CDATA[viavansi]]></category>

		<guid isPermaLink="false">http://xnoccio.com/439-viafirma-entra-en-produccion-en-la-fundacion-tripartita/</guid>
		<description><![CDATA[En VIAVANSI estamos de enhorabuena, ayer lunes 16/03/2009 entró en producción la Aplicación de gestión de las Acciones formativas de las empresas, de la Fundación Tripartita para la Formación en el Empleo (antiguo FORCEM). En esta institución han escogido Viafirma para introducir las funcionalidades de autenticación con certificados digitales con multitud de CA&#8217;s como DNI [...]]]></description>
			<content:encoded><![CDATA[<p>En VIAVANSI estamos de enhorabuena, ayer lunes 16/03/2009 entró en producción la <a href="http://empresas.fundaciontripartita.org" target="_blank">Aplicación de gestión de las Acciones formativas de las empresas</a>, de la Fundación Tripartita para la Formación en el Empleo (antiguo FORCEM). En esta institución han escogido Viafirma para introducir las funcionalidades de autenticación con certificados digitales con multitud de CA&#8217;s como DNI electrónico, FNMT, IZENPE, Camerfirma, ANCERT, Firma Profesional, etc.</p>
<p><a href="http://xnoccio.com/wp-content/uploads/2009/03/viafirma_loading.png" title="viafirma_loading.png" target="_blank"><img src="http://xnoccio.com/wp-content/uploads/2009/03/viafirma_loading.png" alt="viafirma_loading.png" height="207" width="380" /></a></p>
<p> <a href="http://xnoccio.com/439-viafirma-entra-en-produccion-en-la-fundacion-tripartita/#more-439" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://xnoccio.com/439-viafirma-entra-en-produccion-en-la-fundacion-tripartita/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Implementando una caché sencilla de objetos con Ehcache</title>
		<link>http://xnoccio.com/437-implementando-una-cache-sencilla-de-objetos-con-ehcache/</link>
		<comments>http://xnoccio.com/437-implementando-una-cache-sencilla-de-objetos-con-ehcache/#comments</comments>
		<pubDate>Sat, 14 Mar 2009 22:06:05 +0000</pubDate>
		<dc:creator>Javier Echeverría Usua</dc:creator>
		
		<category><![CDATA[javahispano]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[programación]]></category>

		<category><![CDATA[viavansi]]></category>

		<category><![CDATA[tecnologia]]></category>

		<guid isPermaLink="false">http://xnoccio.com/437-implementando-una-cache-sencilla-de-objetos-con-ehcache/</guid>
		<description><![CDATA[Reciéntemente he estado revisando la arquitectura técnica de un proyecto Java EE que estaba teniendo serios problemas de escalabilidad. En Desarrollo todo iba como un tiro, pero con un número importante pero no escandaloso de registros (apenas 100.000) nos encontrábamos con tiempos de respuesta de algunas de las operaciones online que se podían ir a [...]]]></description>
			<content:encoded><![CDATA[<p>Reciéntemente he estado revisando la arquitectura técnica de un proyecto Java EE que estaba teniendo serios problemas de escalabilidad. En Desarrollo todo iba como un tiro, pero con un número importante pero no escandaloso de registros (apenas 100.000) nos encontrábamos con tiempos de respuesta de algunas de las operaciones online que se podían ir a los 5 minutos. Obviamente esos tiempos no son admisibles para una operación web, por lo que urgía detectar fuentes de problemas y optimizar los procesos.</p>
<p>Realmente no había ninguna parte del código culpable al 100%, sino que la funcionalidad implementada, excesivamente flexible para el usuario,  le permitía a éste realizar búsquedas y operaciones que finalmente implicaban una sucesión de consultas, filtrados, operaciones de unión/intersección de listas enormes, persistencia&#8230;</p>
<p>Para muchas de las listas que se manejaban, se podía garantizar su invariabilidad en un tiempo elevado. Datos, por ejemplo, relativos a provincias. Por ello daba la sensación de que implementar una caché de estas listas, y sobre todo de los resultados finales después de las mencionadas operaciones de unión/intersección, etc., podría ser oportuno. Es cierto que Hibernate permite caché de resultados (y de hecho utiliza Ehcache), pero en este caso hablamos de resultados post-procesados, por lo que no sería suficiente.</p>
<p>Cachear objetos en una aplicación Java EE es algo básicamente trivial: siempre disponemos de la opción de ubicar el objeto en contexto de aplicación (ServletContext) y recuperarlo cuando queramos. Sin embargo esta aproximación no deja de ser algo &#8220;de juguete&#8221;. Decidimos utilizar Ehcache en primer lugar porque sabíamos que Hibernate sacaba un buen provecho de él, pero sobre todo porque, con un desarrollo extremadamente sencillo, obtenemos importantes ventajas funcionales como:</p>
<ul>
<li>Gestión de caducidad del contenido. Pasado un tiempo determinado, la caché elimina el objeto cacheado y comienza a devolver NULL a las peticiones posteriores. Nos elimina la responsabilidad de persistir el tiempo de vida de un objeto cacheado.</li>
<li>Configuración del máximo número de objetos a cachear en memoria. Podemos dimensionar la cantidad de objetos que deseamos cachear en memoria. Ehcache se encarga de serializar a disco todo lo que le sobra, y recuperarlo cuando sea necesario. Ni que decir tiene que todos los objetos a cachear deberán ser serializables.</li>
<li>Posibilidad de despliegue en cluster.</li>
<li>Eliminación de la caché durante el <em>shutdown</em> del servidor de aplicaciones.</li>
<li>¡No reinventar la rueda!</li>
</ul>
<p>Al final desarrollamos una sencilla clase tipo Manager, implementando el patrón Singleton, que interactúa con Ehcache. Y en determinadas zonas de la aplicación, invocar a la cache para recuperar los objetos que anteriormente se generaban online.</p>
<p>Paso a poner el código, que al final sin chicha esto se queda en nada :-) Eso sí, me gustaría recalcar que el proceso de 5 minutos al final, con un poco de cariño, ha pasado a responder en menos de 10 segundos. Una ganancia de un 3000%&#8230;<br />
<code><br />
/*<br />
* File: CacheUtil.java<br />
*<br />
* Created on march 2009<br />
*<br />
*<br />
* Copyright 2006-2029 Javier Echeverría Usúa (javieu at gmail.com)<br />
*<br />
* Licensed under the Apache License, Version 2.0 (the "License");<br />
* you may not use this file except in compliance with the License.<br />
* You may obtain a copy of the License at<br />
*<br />
*     http://www.apache.org/licenses/LICENSE-2.0<br />
*<br />
* Unless required by applicable law or agreed to in writing, software<br />
* distributed under the License is distributed on an "AS IS" BASIS,<br />
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<br />
* See the License for the specific language governing permissions and<br />
* limitations under the License.<br />
*<br />
*/<br />
package com.viavansi.framework.core.cache;</code><br />
<code><br />
import net.sf.ehcache.Cache;<br />
import net.sf.ehcache.CacheManager;<br />
import net.sf.ehcache.Element;</code><br />
<code><br />
import org.apache.commons.logging.Log;<br />
import org.apache.commons.logging.LogFactory;</code><br />
<code><br />
import com.viavansi.framework.core.persistencia.servicios.excepciones.ExcepcionServicio;<br />
</code><br />
<code><br />
/**<br />
* @author Javier Echeverria Usua (javieu at gmail.com)<br />
* @author Felix Garcia Borrego (borrego at gmail.com)<br />
* @author Alexis Castilla Armero (pencerval at gmail.com)<br />
*/<br />
public class CacheUtil {</code><br />
<code><br />
public Object getCachedObject(String key) throws Exception{</code><br />
<code><br />
if(minutosVidaDefault == 0)<br />
minutosVidaDefault = MINUTOS_DEFAULT;<br />
</code><code><br />
return getCachedObject(key, minutosVidaDefault);<br />
}<br />
</code><code><br />
public void putCachedObject(String key, Object info) throws Exception{<br />
</code><code><br />
if(minutosVidaDefault == 0)<br />
minutosVidaDefault = MINUTOS_DEFAULT;<br />
</code><code><br />
putCachedObject(key, info, minutosVidaDefault);<br />
}<br />
</code><code><br />
public Object getCachedObject(String key, int minutosCache) throws Exception{<br />
</code><code><br />
Cache cacheCustodia = getInstance(minutosCache);<br />
Element element = cacheCustodia.get(key);<br />
if(element != null){<br />
return cacheCustodia.get(key).getValue();<br />
}<br />
else{<br />
return null;<br />
}<br />
}<br />
</code><code><br />
public void putCachedObject(String key, Object info, int minutosCache) throws Exception{<br />
</code><code><br />
Cache cacheCustodia = getInstance(minutosCache);<br />
cacheCustodia.put(new Element(key,info));<br />
}<br />
</code><code><br />
private Cache getInstance(int minutosCache) {<br />
Cache cache = null;<br />
//Todavía no existe<br />
int timeTolife = minutosCache * 60;<br />
</code><code><br />
CacheManager manager = CacheManager.getInstance();<br />
</code><code><br />
String nombreCache = "viavansiCachedInfo" + minutosCache;<br />
</code><code><br />
if (manager.cacheExists(nombreCache)) {<br />
cache = manager.getCache(nombreCache);<br />
} else {<br />
// Configuramos el apagado en caso de Error de la JVM o parada inesperada.<br />
System.setProperty("net.sf.ehcache.enableShutdownHook", "true");<br />
manager.addCache(new Cache(nombreCache, 100, true, false, timeTolife, timeTolife));<br />
cache = manager.getCache(nombreCache);<br />
}<br />
</code><code><br />
return cache;<br />
}<br />
</code><code><br />
public static void shutDown() {<br />
CacheManager.getInstance().shutdown();<br />
}<br />
</code><code><br />
private int MINUTOS_DEFAULT = 60;<br />
</code><code><br />
private static int minutosVidaDefault = 0;<br />
</code><code><br />
protected CacheUtil(int minutosVida) {<br />
minutosVidaDefault = minutosVida;<br />
}<br />
</code><code><br />
public static void init(int minutosVida) {<br />
minutosVidaDefault = minutosVida;<br />
}<br />
</code><code><br />
/*<br />
* Constructor y accesores<br />
*/<br />
</code><code><br />
// Patrón Singleton<br />
private static CacheUtil singleton;<br />
</code><code><br />
//Instancia de Commons Logging<br />
private Log log = LogFactory.getFactory().getInstance(this.getClass().getName());<br />
</code><code><br />
/**<br />
* private constructor (solo una instancia).<br />
* @return AmbitoBO<br />
*/<br />
protected CacheUtil() throws ExcepcionServicio {<br />
super();<br />
log.debug("Creando nueva instancia de CacheUtil");<br />
}<br />
</code><code><br />
/**<br />
* Devuelve instancia activa de AmbitoBO.<br />
* Típico método de implementación de patrón singleton<br />
* @return AmbitoBO<br />
* @throws ExcepcionServicio<br />
*/<br />
public static CacheUtil getCurrentInstance() throws ExcepcionServicio {<br />
if (singleton == null) {<br />
try {<br />
singleton = new CacheUtil();<br />
} catch (ExcepcionServicio e) {<br />
throw e;<br />
}<br />
}<br />
return singleton;<br />
}<br />
</code><code><br />
}<br />
</code><br />
Un saludo a todos, y poned una caché en vuestros corazones :-P</p>
]]></content:encoded>
			<wfw:commentRss>http://xnoccio.com/437-implementando-una-cache-sencilla-de-objetos-con-ehcache/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Feliz Navidad!</title>
		<link>http://xnoccio.com/411-feliz-navidad/</link>
		<comments>http://xnoccio.com/411-feliz-navidad/#comments</comments>
		<pubDate>Wed, 24 Dec 2008 17:02:25 +0000</pubDate>
		<dc:creator>Javier Echeverría Usua</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://xnoccio.com/411-feliz-navidad/</guid>
		<description><![CDATA[Desde VIAVANSI, los redactores de Xnoccio os deseamos felices fiestas y que para el 2009 todo vaya bien o mejor. Gracias por vuestra fidelidad!
]]></description>
			<content:encoded><![CDATA[<p>Desde VIAVANSI, los redactores de Xnoccio os deseamos felices fiestas y que para el 2009 todo vaya bien o mejor. Gracias por vuestra fidelidad!</p>
]]></content:encoded>
			<wfw:commentRss>http://xnoccio.com/411-feliz-navidad/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Problemas entre Maven y Trend Micro InterScan Web Security Suite</title>
		<link>http://xnoccio.com/404-problemas-entre-maven-y-trend-micro-interscan-web-security-suite/</link>
		<comments>http://xnoccio.com/404-problemas-entre-maven-y-trend-micro-interscan-web-security-suite/#comments</comments>
		<pubDate>Sun, 07 Dec 2008 13:27:07 +0000</pubDate>
		<dc:creator>Javier Echeverría Usua</dc:creator>
		
		<category><![CDATA[seguridad]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[tips]]></category>

		<category><![CDATA[programación]]></category>

		<guid isPermaLink="false">http://xnoccio.com/404-problemas-entre-maven-y-trend-micro-interscan-web-security-suite/</guid>
		<description><![CDATA[Este post no pretende ser más que una ayuda en castellano (encontrable vía Google) para aquellos que se encuentren con este problema en el futuro, ya que hemos encontrado bastantes referencias, pero pocas respuestas.
Los antecedentes
Nos encontrábamos en las instalaciones de un cliente, en un equipo Windows XP al cual le habíamos montado un kit de [...]]]></description>
			<content:encoded><![CDATA[<p>Este post no pretende ser más que una ayuda en castellano (encontrable vía Google) para aquellos que se encuentren con este problema en el futuro, ya que hemos encontrado bastantes referencias, pero pocas respuestas.</p>
<p><em><strong>Los antecedentes</strong></em></p>
<p>Nos encontrábamos en las instalaciones de un cliente, en un equipo Windows XP al cual le habíamos montado un kit de desarrollo completo: Eclipse (con diversos plugins), Maven, JDK, Tomcat&#8217;s de diversas versiones, etc., que tenía que integrarse con Hudson. En ese momento estábamos probando Maven sobre un sencillo proyecto de ejemplo; Maven debía descargar de un repositorio de librerías Artifactory recién descargado. Pero nos encontramos con efectos bastante raros:</p>
<ul>
<li>Al hacer un &#8216;mvn eclipse:eclipse&#8217; en consola, observábamos que todos los JAR&#8217;s descargados daban un error de verificación de <em>checksum</em>.  Es decir, parecía ser que el contenido del JAR descargado no era exactamente el esperado. Y además no conseguíamos cargarnos la librería jline, una de las dependencias de las librerías de Plexus. Raro raro, porque nunca habíamos visto ese error. ¿Estaba pasando algo en algún repositorio público?</li>
<li>Al hacer un&#8217;mvn clean&#8217;, algo mucho más raro todavía. Veíamos un log extrañísimo de repente saltaba un applet en pantalla que nos pedía confirmación de una operación. ¡Este plugin Maven nuevo!</li>
</ul>
<p><a href="http://xnoccio.com/wp-content/uploads/2008/12/imagen-1.png" title="Pantallazo"><img src="http://xnoccio.com/wp-content/uploads/2008/12/imagen-1.png" alt="Pantallazo" /></a></p>
<p><strong>Las pesquisas</strong></p>
<p>Evidentemente aquí hay algo raro. En el log Maven aparecen mensajes que no habíamos visto hasta ahora:<br />
<code><br />
Downloading: http://sanisidro:8080/artifactory/public/org/apache/maven/shared/ma<br />
ven-shared-io/1.1/maven-shared-io-1.1.jar<br />
116K downloaded<br />
[WARNING] *** CHECKSUM FAILED - Checksum failed on download: local = 'e67415a960<br />
00a3110c7834caa325d965022491f6'; remote = '02e1d57be05ecac7dbe56a3c73b113e98f222<br />
40f' - RETRYING<br />
Downloading: http://sanisidro:8080/artifactory/public/org/apache/maven/shared/ma<br />
ven-shared-io/1.1/maven-shared-io-1.1.jar<br />
116K downloaded<br />
[WARNING] *** CHECKSUM FAILED - Checksum failed on download: local = 'e67415a960<br />
00a3110c7834caa325d965022491f6'; remote = '02e1d57be05ecac7dbe56a3c73b113e98f222<br />
40f' - IGNORING<br />
[INFO] [clean:clean]<br />
Current policy properties:<br />
mmc.sess_pe_act.block_unsigned: false<br />
window.num_max: 5<br />
jscan.sess_applet_act.sig_trusted: pass<br />
file.destructive.state: disabled<br />
jscan.sess_applet_act.block_all: false<br />
window.num_limited: true<br />
jscan.sess_applet_act.unsigned: instrument<br />
mmc.sess_pe_act.action: validate<br />
jscan.session.daemon_protocol: http<br />
file.read.state: disabled<br />
mmc.sess_pe_act.block_invalid: true<br />
mmc.sess_pe_act.block_blacklisted: false<br />
net.bind_enable: false<br />
jscan.session.policyname: TU1DIERlZmF1bHQgUG9saWN5<br />
mmc.sess_cab_act.block_unsigned: false<br />
file.nondestructive.state: disabled<br />
jscan.session.origin_uri: http://repo1.maven.org/maven2/org/apache/maven<br />
/shared/file-management/1.2/file-management-1.2.jar<br />
mmc.sess_cab_act.action: validate<br />
net.connect_other: false<br />
jscan.session.user_ipaddr: 127.0.0.1<br />
jscan.sess_applet_act.sig_invalid: block<br />
mmc.sess_cab_act.block_invalid: true<br />
thread.thread_num_max: 8<br />
jscan.sess_applet_act.sig_blacklisted: block<br />
net.connect_src: true<br />
thread.thread_num_limited: true<br />
jscan.sess_applet_act.stub_out_blocked_applet: true<br />
mmc.sess_cab_act.block_blacklisted: true<br />
jscan.session.user_name: 127.0.0.1<br />
thread.threadgroup_create: false<br />
file.write.state: disabled<br />
--&gt;&gt; returning Frame NULL<br />
BaseDialog: owner frame is a java.awt.Frame<br />
</code><br />
Empezamos a pensar. Tras unos minutos de desconcierto, eso de <em>jscan</em> huele a antivirus. A ver si está haciendo algo, modificando los JAR&#8217;s al descargarlos, modificando alguna Java Policy, modificando la JDK, o incluso interactuando con las políticas de seguridad en runtime&#8230; efectivamente, buscando en Google nos lleva a comprobar que el culpable parece ser el antivirus de Trend Micro. Debe estar colocando el applet Java como medida de seguridad, interceptando el código original. El antivirus ha debido pensar que el JAR es un applet y, como hace operaciones de disco (un &#8216;mvn clean&#8217; debe borrar ficheros), pide permiso. Pero, ¿qué y cómo lo está haciendo? Realizamos unas cuantas tareas:</p>
<ul>
<li>Paramos todos los servicios del antivirus. Probamos, sigue fallando. Este antivirus es un poco retorcido, ha debido modificar la JVM o alguna Java Policy.</li>
<li>Restauramos la JVM, nos aseguramos de estar utilizando lo mismo. Sigue fallando, con el antivirus parado&#8230; ¿qué pasa aquí? ¿Dónde está la coleta de este Sansón de la seguridad?</li>
<li>Probamos el applet de firma de Viafirma, que tampoco funciona. En la Java console observamos un error de un paquete com.trend (si al menos funcionara bien!)&#8230; El error era &#8220;<em>Exception at com.trend.iwss.jscan.appscan.runtime</em> &#8230;&#8221;. Nos bajamos el JAR de firma, lo descomprimimos y ¡voilá! Hay un buen conjunto de paquetes nuevos dentro de JAR. El antivirus modifica los JAR&#8217;s, lo cual explica todo: el misterioso applet del mvn clean, la rotura del applet de viafirma, los fallos de checksum&#8230; pero ¡el antivirus está apagado! ¿Cómo lo hace?</li>
</ul>
<p><strong>Las conclusiones</strong></p>
<p>Si el antivirus en local no es culpable, debe haber un antivirus a nivel de red, junto al proxy. Efectivamente. El cliente, que por fortuna es técnico y de los que programan, no de los que sólo hablan, nos confirma que en muchas ocasiones ha tenido que utilizar otro proxy para descargarse JAR&#8217;s. El invento enemigo de los JAR&#8217;s no afecta sólo a Maven, obviamente, sino a cualquier JAR descargado por un proxy que disponga de este mecanismo de seguridad, y que realice determinadas operaciones. De hecho la librería JLine era parada por este producto llamado &#8220;Trend Micro InterScan Web Security Suite&#8221; que, de hecho, publicita este servicio tan majo y maligno a la vez.</p>
<p>Así que si en algún momento os encontráis este tipo de errores tan extraños, ya tenéis otra posibilidad latente.</p>
<p><strong>El epílogo</strong></p>
<p>Nos cambiamos de proxy y todo fue bien, previa limpieza del repositorio de librerías Maven.</p>
]]></content:encoded>
			<wfw:commentRss>http://xnoccio.com/404-problemas-entre-maven-y-trend-micro-interscan-web-security-suite/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
