TomEE

Los 5 servidores Java que se actualizaron el mes pasado

Este mes pasado han ido saliendo numerosas versiones nuevas, de mantenimiento o Release Candidates que por una cosa o por otra no he podido publicar. Os dejo un resumen.

Apache Tomcat 7.0.62
Apache Tomcat 6.0.44

Logo de Apache Tomcat

Logo de Apache Tomcat

Actualizaciones de mantenimiento de ramas antiguas de Tomcat. Deberías ir pensando en pasarte a la 8, que ya esta maduro, e ir dejando estas. Cuando menos te lo esperes dejaran de publicar parches y entonces tendrás un problema.

Relacionado con todo esto, el equipo de seguridad de Tomcat ha publicado el siguiente aviso de seguridad: “CVE-2014-7810: Apache Tomcat Security Manager Bypass”. Afecta a los siguentes productos: Apache Tomcat 8.0.0-RC1 a 8.0.15, Apache Tomcat 7.0.0 a 7.0.57 y Apache Tomcat 6.0.0 a 6.0.43. Tambien puede afectar a JBoss. Para explotarla hace falta que tengamos instalada una aplicación maliciosa en nuestro servidor. Esto no suele ser lo habitual, pero actualizar el servidor de aplicaciones es fácil y rápido. Al menos una vez que te han autorizado a ello.

Páginas de descarga:

https://tomcat.apache.org/download-70.cgi
https://tomcat.apache.org/download-60.cgi

Apache TomEE 1.7.2

Por fin una versión nueva de este ligero servidor J2EE web profile. Me sorprende que pase tanto tiempo entre versiones, aunque sea para actualizar el Tomcat sobre el que se basan. Aunque en la nota de lanzamiento dicen que utilizan Tomcat 7.0.61, si miras las releases notes (o si descargas el paquete y lo miras, como hice yo) veras que se trata de la 7.0.62, que es la ultima disponible de la rama 7. Ademas del Tomcat, han subido a xbean 4.1, OpenJPA 2.4.0, xbean 4.2, cxf 2.6.16, myfaces 2.1.16… En fin, últimas versiones de esos jars que hacen felices a los programadores.

Página de descargas:

http://tomee.apache.org/downloads.html

Jetty 9.2.11.v20150529
Jetty 7.6.17.v20150415
Jetty 8.1.17.v20150415

Logo del proyecto Jetty

Logo del proyecto Jetty

Versiones de mantenimiento de Jetty. No he visto nada que me llamara la atención, pero eso no quiere decir que no actualices. No hace daño y a la larga ahorra sustos.

Página de descargas:

http://download.eclipse.org/jetty/

WildFly 9.0.0.CR1

Logo oficial de WildFly

Logo oficial de WildFly

WildFly 9 implementa los perfiles Java EE7 full y web profile. Ahora soporta HTTP/2 y SPDY, puede funcionar como frontal para hacer balanceo de carga (esto te puede resultar útil si por lo que sea no puedes usar un Apache), nuevos modos de suspensión y apagado (otra cosa que se suele hacer con el Apache del frontal), consola de gestión por linea de comandos y muchas cosas mas. Estoy deseando que tengamos la versión definitiva. En las releases notes tienes mas detalles.

Página de descargas:

http://wildfly.org/downloads/

JBoss EAP 6.4

No suelo avisar de la salida de servidores “de pago” ya que si estas pagando el soporte estos avisos te llevan directamente, pero como este mes han salido tantas cosas, lo añado. El único cambio reseñable es que ahora se soporta el JDK 8 y se asegura su funcionamiento en nuevas versiones de los SGBD habituales.

Como has visto, ha sido un mes movido. Si ha salido algún otro y se me ha pasado, no dudes en ponerlo en los comentarios.

Disponible Apache TomEE 1.7.1

Apache TomEE

Apache TomEE

Desde hace unos días esta disponible la versión 1.7.1 de TomEE. No dan demasiada información sobre esta versión, ya que se trata de una ligera corrección de bugs de la 1.7.0. Puedes ver aqui las Releases Notes. Y si no recuerdas en que consiste TomEE, pues ver las entradas anteriores.

Apache TomEE 1.5.2 disponible

La fundación Apache ha liberado la versión 1.5.2 de Apache TomEE. Contiene cambios menores sobre la versión 1.5.1, siendo los principales la actualización a Tomcat 7.0.39 y OpenWebBeans 1.1.8. Según parece, están reservando los mayores cambios para la 1.6.0. De cualquier forma, siempre es preferible tener nuestros servidores de aplicaciones actualizados a la ultima versión.

Puedes descargarlo y ver el changelog aquí: http://tomee.apache.org/downloads.html
Y la documentación: http://tomee.apache.org/documentation.html

Si no conoces Apache TomEE, precisamente ayer estuvimos hablando de él.

Comparativa de rendimiento entre Tomcat y TomEE

Introducción

Hace algún tiempo presente TomEE en un par de entradas. Por si no lo recuerdas, TomEE es un servidor J2EE Web Profile certificado construido encima de Tomcat. Básicamente se trata de un Tomcat con librerías añadidas.

Pues a raíz de esto me preguntaron si todo lo añadido a TomEE le penalizaba a la hora de ejecutar aplicaciones con respecto a Tomcat. ¿La aplicación practica de esto? Por ejemplo, si tengo en una maquina un Tomcat y un TomEE, es importante saber si lo que gano consolidando todas las aplicaciones en el TomEE se pierde por el overhead de este. En general esto es algo que yo no haría: prefiero tener las aplicaciones separadas en varios servidores de aplicaciones en lugar de en uno enorme. Sin embargo, puede haber casos en que resulte útil una consolidación como esta.

Así que me dispuse a comprobarlo. Utilizando una aplicación de prueba, la ejecute en TomEE 1.5.1 y en su Tomcat equivalente 7.0.34. Ambos los configure con el mismo JDK (jdk1.6.0_43) y con la configuración por defecto de memoria. El único cambio ha sido la utilización de JMX para la motorización. Para las pruebas utilice JMeter, un proyecto de la fundación Apache para pruebas de carga.

Resultados

Como en otras ocasiones, los resultados de las pruebas per se e incluso la prueba no tienen valor alguno: lo importante es la comparación entre ambos servidores.

Primero veamos el comportamiento de cada servidor durante la prueba. Primero Tomcat:

Comportamiento de Tomcat durante la prueba

Comportamiento de Tomcat durante la prueba (pulsa para agrandar)

Ahora TomEE:

Comportamiento de TomEE durante la prueba

Comportamiento de TomEE durante la prueba (pulsa para agrandar)

Veamos esto en una tabla comparativa:

Tomcat Tomee
Espacio en disco: 14 M 35 M
Tiempo de arranque: 6069 ms 16408 ms
Heap utilizado 50 – 115 M 50 – 100 M
Non-Heap utilizado 60 M 60 M
CPU utilizado 20 – 60 % 20 – 60 %
Clases cargadas 8079 9683
Hilos lanzados 39 44
Ficheros servidos por segundo 90,58 92,04
Kb servidos por segundo 1641,64 1668,93

Conclusión

Como puede verse, a pesar de que TomEE carga un mayor numero de clases y utiliza mas hilos en su ejecucion, el consumo de CPU y memoria es prácticamente idéntico, así como el comportamiento de la aplicación. Es decir, podemos instalar en TomEE aplicaciones que tradicionalmente irían en un Tomcat sin miedo a la perdida de recursos o rendimiento, con poco de penalización de espacio en disco/backups.

Presentando Apache TomEE (Parte 2: Estructura de directorios)

Apache TomEE

La organización de directorios de TomEE es (casi) exactamente la misma que la de Tomcat. Recordemos que Tomee procede de añadir a Tomcat aquello que necesita para cumplir la especificación. En concreto, para la versión apache-tomee-webprofile-1.5.1 corresponde un apache-tomcat-7.0.34.

Ademas, para que se puedan ver fácilmente los cambios existentes en los diferentes archivos, los responsables del proyecto han decidido incluir en el paquete tanto el fichero modificado como aquel del cual procede. Por ejemplo, si TomEE-1.5.1 contiene un fichero catalina.sh modificado, también se incluye un fichero de nombre catalina.sh.original cuyo contenido es el mismo que el del fichero catalina.sh de Tomcat-7.0.34. Así podemos ver que cambios se han realizado sobre el paquete base.

La estructura de directorios es la siguiente:

/bin

  • Añadido tomee.sh: se trata de un script que permite realizar operaciones por linea de comandos, como por ejemplo realizar despliegues. Puede necesitar configuración para su correcto funcionamiento (puerto de escucha del servidor…).
  • Añadidos TomEE.*.exe: Binarios para usarlos como servicio de Windows.
  • Añadidos service*.bat: Instaladores del servicio de Windows.
  • Modificado catalina.(sh|bat). Como comentaba antes, se ha añadido el fichero catalina.(sh|bat).original. En el caso del .sh, las lineas añadidas son las siguientes:

    # Add OpenEJB javaagent
    if [ -r "$CATALINA_HOME"/lib/openejb-javaagent.jar ]; then
    JAVA_OPTS=""-javaagent:$CATALINA_HOME/lib/openejb-javaagent.jar" $JAVA_OPTS"
    fi

    Al parecer, estas lineas solo son necesarias si se quiere usar simultáneamente JPA y la implementación de OpenJPA.

/conf

  • Añadido system.properties: sirve para configurar propiedades de TomEE. Sin haber buceado mucho en ello, diría que sirve para sobrescribir propiedades de los diferentes jars que se han añadido. Lo normal sera que no necesitemos tocar este fichero.
  • Añadido tomee.xml: Aquí definiremos recursos, contenedores… como por ejemplo los DataSources. Este fichero, al contrario que el anterior, sí sera uno de los que tengamos que configurar.
  • Modificado server.xml: A este fichero solo se le ha añadido un Listener, así que lo modificaremos según nos haga falta igual que lo hacíamos con Tomcat. El Listener añadido es este:

    <!-- TomEE plugin for Tomcat -->
    <Listener className="org.apache.tomee.catalina.ServerListener" />

  • Modificado tomcat-users.xml. Se han añadido lineas para gestionar el acceso a la aplicación de gestión de TomEE:

    <!-- Activate those lines to get access to TomEE GUI --/>
    <!--
    <role rolename="tomee-admin" //>
    <user username="tomee" password="tomee" roles="tomee-admin,manager-gui" //>
    --/>

/endorsed

  • Añadida esta carpeta.
  • Añadida la librería annotation-api.jar. Sobrescribe el jar por defecto de Tomcat, pues no es compatible con la especificacion de JEE6.
  • Añadida las librerias jaxb-(api|impl).jar. Sobrescriben la implementación por defecto del JDK 1.6 por estar anticuadas con respecto a JEE6.

/lib

  • Añadidas todas las librerías openejb-* y tomee-*, asi como sus depedendencias. Este es núcleo central de TomEE.
  • Eliminada annotation-api.jar. Como no era compatible con JEE6, se ha cambiado la versión que venía con Tomcat y para evitar confusiones, se ha pasado a /endorsed.
  • Eliminada el-api.jar. Ya esta contenida en una de las librerias que se han añadido: javaee-api.jar.

/webapps

  • Se han eliminado los ejemplos.
  • Los WARs se siguen desplegando aquí, de la misma manera que se hace con Tomcat.
  • Añadida la aplicación tomee. Es la interfaz de administración del servidor de aplicaciones. Es opcional, pero diría que si la quitamos habrá cosas que dejen de funcionar, por ejemplo las operaciones que se realizan desde el script tomee.sh.

/apps

  • Esta carpeta no existe por defecto, tendremos que crearla nosotros. Se emplea para desplegar EARs y JARs. Los resources.xml tambien cendran aquí. En mi opinión, esta carpeta debería existir en el paquete.

Y eso es todo. Lógicamente, sigues teniendo las carpetas /work, temp/ y log/, pero sobre esto no hay ningún cambio. Como se puede ver, no han exagerado cuando decían que lo único que había que hacer era añadir librerías al Tomcat.

En la próxima entrega seguiremos profundizando en el servidor, lo arrancaremos y veremos que encontramos.

Puedes ver anterior entrega de esta serie aquí: Presentando Apache TomEE (Parte 1: Introducción)

Ir arriba