martes, 10 de octubre de 2006

Cómo hacer de JOnAS un servicio Windows

Durante los últimos meses he estado embarcado en un proyecto que utiliza web services. Al principio confié en Tomcat, puesto que era el servidor de aplicaciones con el que JBuilder trabaja, pero en la puesta en producción Tomcat me ha dado muchos quebraderos de cabeza, puesto que en distintas instalaciones con equipos idénticos, distintos, e incluso en distintas instalaciones en el mismo equipo, los web services funcionaban o no. Lamentablemente, en la mayor parte de las instalaciones no funcionaban, y aún no sé por qué.

Al final, la apuesta se realizó con JOnAS, un servidor de aplicaciones que soporta multitud de arquitecturas, incluyendo web services, SOA, EJB, etc. Y la puesta en producción funciona al 100%.

El problema de este servidor de aplicaciones es que no se instala como servicio Windows, y esto conlleva varios problemas. Por defecto, JOnAS se instala como una aplicación normal, que debe ser arrancada manualmente. Los problemas de añadir un arranque en el startup de Windows son:

- Cada vez que se abre una sesión en Windows arranca también JOnAS (varias instancias distintas de JOnAS)
- Puede haber diferentes sesiones de distintos usuarios, y, por tanto, el startup está asociado a cada usuario.
- Cada vez que se cierra una sesión, se cierra la consiguiente instancia de JOnAS, por lo que si se cierran todas las sesiones, JOnAS dejará de funcionar.

Para hacer de JOnAS un servicio Windows hay que realizar una serie de pasos utilizando una utilidad open source de terceros llamada Java Service Wrapper. Este producto lo desarrolla Tanuki Software, y el site es:

http://wrapper.tanukisoftware.org/doc/english/introduction.html

Esta herramienta permite ejecutar aplicaciones Java como servicios o como demonios del sistema operativo, y está disponible para Windows, Linux, Solaris y MacOS X.

Para descargar el software, acceder al repositorio correspondiente en SourceForge.net:

http://sourceforge.net/project/showfiles.php?group_id=39428&package_id=31591

La último versión para Windows es la 3.2.1., y el fichero para Windows sería:

wrapper-windows-x86-32-3.2.1.zip

Descomprimir el archivo en un directorio fácilmente accesible, como por ejemplo:

C:\wrapper321

Debajo de este directorio deben colgar los directorios: bin, conf, doc, jdoc, lib, logs, src.

Copiar el archivo

C:\wrapper321\bin\wrapper.exe

al directorio base de JOnAS, por ejemplo:

C:\JOnAS476

Crear o modificar las variables del sistema:


WRAPPER_HOME = C:\wrapper321
JONAS_BASE = C:\JOnAS476
JONAS_ROOT = C:\JOnAS476


Abrir la consola de MS-DOS y escribir los siguientes comandos:


cd C:\JOnAS476
ant create_win32service
ant install_win32service


Para comprobar, arrancar y detener el servicio Windows, acceder a las Herramientas Administrativas de Windows y hacer clic sobre la herramienta “Servicios”, o ejecutar directamente:

%SystemRoot%\system32\services.msc /s

Para más información:

http://jonas.objectweb.org/current/doc/howto/Win32Service.html