Exécuter JAR comme un service Windows [dupliquer]
Cette question a déjà une réponse ici:
j'ai un fichier JAR et je voudrais l'enregistrer et l'exécuter comme un service Windows. Avec un JAR bien configuré et des crochets d'arrêt JVM déjà enregistrés, cela ne devrait pas être un gros travail.
j'ai déjà avoir un bocal avec externe lib
dir, je peux commencer par java -jar My.jar
et arrêter avec Ctrl+C
.
j'ai aussi vérifié JSL, JSmooth, et procrun d'Apache sans solution de travail.
j'aurais besoin d'une solution de travail avec un bon tutoriel.
mise à Jour: j'ai réussi avec procrun (enfin), et le manuel.NET Service wrapper aussi... Voici le code de la version procrun de mon installation.chauve-souris:
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%
je présume
- exécutez ceci à partir du même répertoire où le jar et le prunsrv.exe est
- le bocal a son Manifeste de fonctionnement.MF
- et vous avez des crochets d'arrêt enregistrés dans JVM (par exemple avec context.registerShutdownHook () au printemps)...
- ne pas utiliser de chemins relatifs pour les fichiers en dehors du jar (par exemple log4j doit être utilisé avec log4j.appender.X. Fichier=${app.accueil} / logs / my.journal ou quelque chose de semblable)
Merci à l'équipe d'apache procrun ( http://commons.apache.org/proper/commons-daemon//procrun.html) et à marifnst (http://a089lp.wordpress.com/tag/procrun-tutorial/)
mise à Jour 2: un nouveau bon tutoriel avec winsv: https://dzone.com/articles/spring-boot-as-a-windows-service-in-5-minutes
3 réponses
écrire votre propre service à partir de ces échantillons:
- http://www.codeproject.com/Articles/3990/Simple-Windows-Service-Sample
- http://msdn.microsoft.com/en-us/library/windows/desktop/bb540476%28v=vs.85%29.aspx?bcsi-ac-bbaf765720ef3335=20190C4200000503o7MxKbMq7UL6Af4O24rqKSGuh1gPAwAAAwUAAPvrLQAIBwAAbwEAAGhCCQA=
- http://code.msdn.microsoft.com/windowsdesktop/CppWindowsService-cacf4948?bcsi-ac-bbaf765720ef3335=20190C4200000503o7MxKbMq7UL6Af4O24rqKSGuh1gPAwAAAwUAAPvrLQAIBwAAbwEAAGhCCQA=
En onStart
vous avez à faire CreateProcess( "java", "-jar", "MyJar.jar" )
, garder son PID
En onStop
vous devez tuer par le PID
Essayez ce java lanceur
http://winrun4j.sourceforge.net/
libre et open source
démarrer le service exemple à la fin de la page
vous pouvez utiliser Java Service Wrapper
http://wrapper.tanukisoftware.com/doc/english/download.jsp
ils ne doivent pas distribuer la version windows x86_64 compilée de Comunity Edition mais vous pouvez la construire vous-même.