Tengo un archivo JAR ejecutable. ¿Es posible crear un servicio de Windows de ese JAR? En realidad, solo quiero ejecutar eso al inicio, pero no quiero colocar ese archivo JAR en mi carpeta de inicio, ni en el registro.Cómo crear un servicio de Windows desde java jar?
Respuesta
Este artículo debería decirle todo lo que necesita saber: "Running Java Applications as a Windows Service"; se menciona el uso de "Java Service Wrapper" (hay una edición de la comunidad llamada YAJSW)
http://yajsw.sourceforge.net/ – Ben
Tanuki cambiado la licencia de jsw hace algún tiempo, si yo iba a comenzar un proyecto, usaría Sin embargo, otro de Java Service Wrapper, http://yajsw.sourceforge.net/ que es más o menos una implementación de código abierto que imita a JWS, y luego se basa en él y lo mejora aún más.
EDIT: he estado usando YAJSW durante varios años en varios platorms (Windows, varios linux ...) y es genial, el desarrollo está en curso.
He estado experimentando con Apache Commons Daemon. Es compatible con Windows (Procrun) y Unix (Jsvc). Advanced Installer tiene un Java Service tutorial con un proyecto de ejemplo para descargar. Si obtiene su javaservice.jar ejecutándose como un servicio de Windows, puede probarlo usando "telnet 4444". Usé su ejemplo porque mi atención estaba puesta en ejecutar un servicio de Windows, no escribiendo Java.
Para un servicio de Windows [WinRun4j] (http://winrun4j.sourceforge.net/) también es un buen candidato. Puede funcionar como Java Launcher o Service Wrapper – mcdon
Con procrun tiene que copiar prunsrv al directorio de la aplicación (download), y crear una install.bat así:
set PR_PATH=%CD%
SET PR_SERVICE_NAME=MyService
SET PR_JAR=MyService.jar
SET START_CLASS=org.my.Main
SET START_METHOD=main
SET STOP_CLASS=java.lang.System
SET STOP_METHOD=exit
rem ; separated values
SET STOP_PARAMS=0
rem ; separated values
SET JVM_OPTIONS=-Dapp.home=%PR_PATH%
prunsrv.exe //IS//%PR_SERVICE_NAME% --Install="%PR_PATH%\prunsrv.exe" --Jvm=auto --Startup=auto --StartMode=jvm --StartClass=%START_CLASS% --StartMethod=%START_METHOD% --StopMode=jvm --StopClass=%STOP_CLASS% --StopMethod=%STOP_METHOD% ++StopParams=%STOP_PARAMS% --Classpath="%PR_PATH%\%PR_JAR%" --DisplayName="%PR_SERVICE_NAME%" ++JvmOptions=%JVM_OPTIONS%
supongo que
- plazo esto desde el mismo directorio donde el jar y prunsrv.exe es
- el jar tiene su MANIFEST.MF de trabajo
- y tiene los ganchos de apagado registrados en JVM (para ejemplo, con context.registerShutdownHook() en la primavera) ...
- no usar rutas relativas para los archivos fuera de la jarra (por ejemplo log4j debe utilizarse con log4j.appender.X.File = $ {} app.home/logs /my.log o algo parecido)
Comprobar la procrun manual y this tutorial para más información.
¿Hay algún ejemplo que pueda compartir? –
sí: vea el de arriba :-) ¿qué más necesita? – BTakacs
Gracias BTakacs, ya revisé tu tutorial y funcionó bien. Pero desafortunadamente eso no resolvió lo que yo quería hacer ... Estoy tratando de lograr eso ahora desde C#. –
La solución más fácil que encontré para esto hasta ahora es el uso Non-Sucking Service Manager
sería
nssm install <servicename> "C:\Program Files\Java\jre7\java.exe" "-jar <path-to-jar-file>"
Hice lo mismo y se instaló con éxito, pero tan pronto como lo ejecuto, dice 'estado inesperado SERVICE-PAUSED in respuesta al control START ' – aneela
@kopernik, lo mismo que me pasa a mí ... cualquier ayuda por favor .. – Shakthi
Este mismo problema como usted mencionó. ¿Alguna idea de lo que está mal? –
Uso nssm.exe pero recuerde que debe establecer el AppDirectory o cualquier biblioteca o recursos requeridos no serán accesibles . De forma predeterminada, nssm establece el directorio de trabajo actual en el de la aplicación, java.exe, no en el jar. Así hacer esto para crear un archivo por lotes:
pushd <path-to-jar>
nssm.exe install "<service-name>" "<path-to-java.exe>" "-jar <name-of-jar>"
nssm.exe set "<service-name>" AppDirectory "<path-to-jar>"
Esto debería solucionar el servicio se detuvo tema.
Esto es bueno ... Debe agregarlo como comentario a la respuesta de kopernik. –
Establecer el AppDirectory después de la creación del servicio falló en mi caso. Pero puede iniciar una interfaz gráfica de usuario con 'nssm install
- 1. Cómo crear un servicio de Windows desde la aplicación java
- 2. Crear servicio de Windows desde el ejecutable
- 3. ¿Cómo puedo hacer un JAR desde .java
- 4. iniciar el servicio de Windows desde java
- 5. Java - Crear una clase desde un archivo Jar
- 6. Crear un archivo jar desde un archivo de Scala
- 7. Crear un servicio de Windows en vb6
- 8. ¿Cómo crear un archivo jar ejecutable desde un proyecto clojure?
- 9. Ejecutar archivo .jar desde un programa Java
- 10. Cómo crear manualmente un servicio Apache de Windows
- 11. Crear un servicio de Windows en delphi
- 12. Cómo crear un jar ejecutable con jar de dependencia
- 13. código Java para crear un archivo JAR
- 14. ¿Cómo crear un paquete OSGi desde la biblioteca jar?
- 15. ¿Cómo instalo un servicio C# Windows sin crear un instalador?
- 16. ¿Cómo crear un objeto java desde 'anyType' devuelto desde el servicio usando JAXB?
- 17. ¿Cómo crear un servicio de Windows para Mac OS X?
- 18. Crear Windows Installer para programas Java
- 19. Cómo llamar a un servicio de Windows desde asp.net
- 20. ¿Cómo crear un archivo jar encriptado?
- 21. Cómo crear un archivo Jar en Netbeans
- 22. Crear un servicio de Windows para abrir un programa- Delphi
- 23. Cómo crear un servicio de escucha C# para MSMQ como un servicio de Windows
- 24. ¿Cómo crear un cliente Java para el servicio web?
- 25. Cómo crear un archivo .jar o export jar en IntelliJ (como eclipse java archive export)
- 26. Programa de Java como servicio de Windows
- 27. Crear archivo jar desde la línea de comandos
- 28. ¿Cómo crear un archivo jar ofuscado?
- 29. ¿Es posible crear clases Java desde JavaDoc?
- 30. iniciando un proceso desde un servicio Windows .NET
¿No está en el registro también?Entonces, ¿por qué lo quieres como un servicio? –
@ o.k.w es correcto si está creando un servicio de Windows, creará una entrada en el registro. –
Creo que este usuario significaba "ejecutar como un servicio, no desde las claves de registro de inicio como un servicio no" –