lunes, 18 de julio de 2011

Tomcat 7: cuatro puntos a favor

Esta es una mini-entrada para contarles rápidamente mis impresiones del Tomcat 7.0.16, que ya es un release estable para producción y funciona muy bien con Dinámica, incluyendo el ambiente de desarrollo.

Lo que me gustó:

1.- Por fin los logs de Catalina pueden ser rotados diariamente cuando corre como servicio Windows. Este es un problema con Tomcat 6, el log de errores crece sin medida cuando se ejecuta el proceso como servicio. Además utiliza logging.properties para la configuración de los logs. Por cierto que la última versión de Dinámica (3.1.4) que publicamos hoy incorpora un servicio para descargar los archivos de log de tomcat vía browser, de uso opcional y sujeto a seguridad por supuesto, muy útil en producción cuando el entorno es cerrado y no hay acceso al filesystem del host.

2.- El context.xml privado de cada webapp se queda en un solo sitio. Tomcat 6 tenía la mala costumbre de hacer una copia a /conf/Catalina/localhost apenas hacía deploy de la webapp, y a partir de ese momento ese era el Context.xml (renombrado a XXX.xml según el nombre del contexto) que valía. Ahora no, el context.xml se queda en la carpeta /META-INF de la webapp. Si lo quiere editar, basta con tocar el archivo en esa carpeta.

3.- Es rápido, hemos visto tiempos promedios por debajo de los 10ms para solicitudes de web services que retornan recordsets serializados, por poner un ejemplo. Llegamos a obtener tiempos de hasta de 4ms para ejecutar Actions de Dinámica. Nada mal.

4.- Los utilities Monitor y WebApp Reloader de Dinámica siguen funcionando bien con Tomcat 7, aunque tuvimos que hacer ajustes a los servicios de diagnóstico porque hubo leves cambios en los nombres de ciertos atributos en relación a Tomcat 6, pero fue una molestia menor, la última versión de Dinámica resuelve este problema y garantiza un comportamiento homogeneo de estas facilidades entre la Tomcat 6 y Tomcat 7.


Y otro punto a favor es que las modificaciones que le hicimos a Tomcat 6 para que permitiera contraseñas encriptadas en los archivos context.xml siguieron funcionando sin necesidad de modificar el código en Tomcat 7.


Ya están disponibles nuestras distros de Tomcat 7 para Windows y Linux, en nuestro estilo minimalista, sin JSP, sin webapps preinstaladas y con un server.xml casi vacío. Vienen listas para desarrollar con Dinámica, incluyendo JAX-WS 2.2.5, JavaMail 1.4.4, los últimos drivers JDBC de PostgreSQL y SQLServer (jTDS), JMS y un manager de transacciones distribuidas JTA (JOTM). Empresarial pero sin sobrecarga ni complicaciones.

Si lo quieren descargar (Tomcat 7.0.27):

Windows 32 y 64 bits (incluye lo necesario para correr como servicio).
Linux

A tomar en cuenta: Aunque Tomcat 6.0.32 es una versión muy sólida, hay que tener en cuenta que Tomcat 7 es la continuación de esta línea de velocidad y estabilidad, pero con mejoras, y más importante aun, todo el esfuerzo de desarrollo se enfoca ahora en Tomcat 7, así que tarde o temprano tocará migrar.

De la especificación de servlets 3.0, hasta el momento puedo decir que lo único que me gusta es que finalmente regularon el tema de los Uploads como parte del estándar y del API, ya era hora, y es una verdadera mejora al excelente modelo de programación web que representan los Servlets. El resto me parece que es un exceso de Annotations y concesiones con los frameworks dominantes y aburridos, ya que sus creadores son miembros del comité JCP que regula la especificación.

UPDATE del 8 de mayo 2012: recientemente le pusieron a Tomcat una mejora para inicializar los contextos en paralelo, lo que hace que el servicio levante más rápido, es un atributo del elemento Host, llamado StartStopThreads, por defecto es 1 pero lo pueden poner en 3 o 4 para ver la diferencia... funciona!

Un abrazo,
El team Dinámica