java - manager - procrun example
¿El mejor método para ejecutar una aplicación Java como un*nix Daemon o servicio de Windows? (3)
Estoy buscando el mejor método para ejecutar una aplicación Java como un demonio * NIX o un servicio de Windows. He consultado Java Service Wrapper , el proyecto de Apache Commons ''jsvc'' y el proyecto de Apache Commons ''procrun'' . Hasta ahora, Java Service Wrapper parece ser la mejor opción ... pero, me pregunto si hay algún otro producto licenciado "de código abierto" disponible.
¿Hay algún atributo especial que necesite aplicar (como la administración de recursos guiados por el sistema operativo) que necesita para ser compatible? De lo contrario, para Unix, debe poder demonizar su aplicación escribiendo un script init.d apropiado y configurando su aplicación para que se inicie automáticamente.
Tuve un gran éxito con Java Service Wrapper. No he mirado a los demás, pero las principales fortalezas de ServiceWrapper son:
- Gran soporte para plataformas X: lo he usado en Windows y Linux, y me resultó fácil en ambos
- Documentación sólida: los documentos son claros y precisos, con excelentes ejemplos
- Soporte profundo por plataforma: hay algunas características únicas en el sistema de administración de servicios de ventanas que son compatibles perfectamente con el contenedor de servicios (sin reinicio). Y en Windows, incluso verá el nombre de su aplicación en la lista de procesos en lugar de solo "java.exe".
- Cumplimiento de estándares: a diferencia de muchos scripts de inicio de Java ad-hoc, los scripts para el envoltorio de servicios tienden a cumplir con los estándares de LSB. Esto puede terminar siendo muy importante si alguna vez desea una administración de alta disponibilidad de algo como Linux Heartbeat / HA.
De todos modos, solo mis 2 centavos ... :)
Otra opción es WinRun4J . Esto es solo Windows pero tiene algunas características útiles:
- Soporte de 32 bit y 64 bit
- API para acceder al registro de eventos y registro
- Puede registrar el servicio para que dependa de otros servicios (es decir, serviceA y serviceB deben iniciarse antes del servicioC)
También es compatible con código abierto (CPL), por lo que no hay restricciones de uso.
(divulgación completa: yo trabajo en este proyecto).