miércoles, marzo 31, 2010

Autoejecución de un proceso (servlet) al iniciar el servidor de aplicaciones Java

En algunas ocasiones se nos ha planteado las siguientes preguntas:

¿Cómo puede hacer para que el servidor de aplicaciones tomcat ejecute un proceso java en el momento en que arranca?

Puede ser muy util, el poder lanzar un proceso java en el momento que se inicia el servidor de aplicaciones, ya que así podemos aprovechar para realizar precargas u otras tareas.

Para ello se en una de las aplicaciones desplegadas en el servidor, modificaremos el archivo web.xml.

La idea es utilizar la etiqueta , que permitirá indicar en el web.xml en que orden se cargará cada servlet.
El valor que contiene esta etiqueta es un entero positivo, que indica precisamente el orden de carga.
Cuando es cargado, el método INIT() del servlet es llamado. De todas formas este tag es una buena manera para conseguir:
• Arrancar demonios, para escuchar en puerto TCP/IP o para lanzar hilos de ejecución de mantenimiento en background.
• Para inicializar la aplicación, para proveer información a otros servletso o JSPs.
• Si no se utilizar la etiqueta , el servlet sera cargado cuando el contenedor de servlets lo decida, normalmente en el primer acceso.
Ejemplo de uso:

Definición de un servlet en el web.xml:



<servlet>
<servlet-name>JerseyTest</servlet-name>
<servlet-class>com.sun.jersey.server.impl.container.servlet.ServletAdaptor</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JerseyTest</servlet-name>
<url-pattern>/thing/*<url-pattern>
</url-pattern>
</url-pattern></servlet-mapping>