2009-09-10 24 views
22

Me gustaría ejecutar una aplicación Java como servicio. Desafortunadamente, estoy limitado porque no puedo usar algo como el Java Service Wrapper (que parece ser una herramienta excelente).Ejecutar la aplicación Java como servicio

¿Hay alguna forma de ejecutar un JAR ejecutable, como un servicio, sin depender de aplicaciones externas? Actualmente tengo el servicio instalado, pero no se puede iniciar. Aquí es donde me estoy estancando y no he podido encontrar nada en Google que no sea información sobre el JSW.

+0

Se refiere a http://stackoverflow.com/questions/68113/how-to-create-a-windows-service-from-java-app – skaffman

+0

Por qué ¿no puedes usar Java Service Wrapper? – Kevin

+0

@Kevin - Algunas razones diferentes. En primer lugar, y ante todo, está la concesión de licencias (GPL: no puedo abrir el código al que se aplica esto). – JasCav

Respuesta

11

Hay un clon LGPL del Java Service Wrapper: http://yajsw.sourceforge.net

BTW, IANAL, pero sospecho que las personas JSW están difundiendo FUD, y su software se puede usar para habilitar aplicaciones comerciales bajo la licencia GPL, al igual que uno puede gzip una aplicación comercial para redistribución. Podría estar completamente equivocado sobre esto, aunque :)

+1

Según la redacción de wrapper.tanukisoftware.com/doc/english/licenseCommunity.html, está muy claro que Community Edition no se puede utilizar con un programa que no sea de código abierto debido a que está bajo la GPL. –

+0

GPL no impide que los programas no de código abierto se utilicen "con" programas GPL (por ejemplo, está perfectamente bien ejecutar aplicaciones comerciales en el sistema operativo Linux). Solo impide la creación de un trabajo derivado vinculándolo con el código GPL y liberándolo bajo licencia no GPL. En este caso, no está claro para mí que se está creando un trabajo derivado. – ykaganovich

+0

Meh, puede que tengas razón. Distribuyen sus productos no bajo GPL, sino bajo alguna extraña licencia que requiere que el software distribuido del producto se distribuya bajo GPL independientemente de que sea un producto derivado. Me pregunto si esto es legal ... pero creo que es mejor suponer que es así. – ykaganovich

2

No lo he probado (aún), pero Launch4j parece que se ajusta a sus necesidades.

+1

No se registra como pero es una buena opción para empaquetar programas de usuario que no se ejecutan como un servicio. – djangofan

6

Un programa que debe ejecutarse como servicio de Windows debe proporcionar ciertas funciones que el administrador de servicios de Windows usa para comunicarse con ese servicio.

Mientras no exista JVM que implemente estas funciones directamente (y no conozco ninguna), necesitará algún tipo de envoltorio.

que han utilizado con éxito srvany para un servicio de Windows basado en Java (Básicamente se permite ejecutar cualquier programa como servicio de Windows y funciona bien con Java)

+0

Esta es la única respuesta que responde a la pregunta; todos los demás mencionan otra herramienta externa que el OP intenta evitar. ¡Gracias! – mrtumnus

1

una opción más winrun4j. la licencia es CPL de eclipse.

+0

sí, pero al igual que las otras envolturas de servicio, requiere que implemente la interfaz pública para integrar su aplicación en el controlador de servicio. – djangofan

0

La forma más sencilla que encontré fue RunAsService.

Un compañero de trabajo recomendó una herramienta llamada SC, pero no lo probé.

0

JSmooth puede hacerlo, y es secuencia de comandos con hormiga.

+0

Parece que la envoltura del servicio comienza a romperse en Windows 7 :( –

1

Puede utilizar NSSM así:

nssm install MyService "%JAVA_HOME%\bin\java.exe" -jar "path\to\the\file.jar" 
Cuestiones relacionadas