Printemps de démarrage BOCAL en tant que service windows
Je suis en train d'envelopper un printemps de démarrage "uber POT" avec procrun.
Exécutant la commande suivante fonctionne comme prévu:
java-jar my.jar
J'ai besoin de mon ressort de démarrage jar pour démarrer automatiquement au démarrage de windows. La plus belle solution pour cela est de lancer le pot comme un service (même en tant qu'unité autonome de tomcat).
Lorsque j'essaie d'exécuter ce que je suis "Commons Daemon procrun a échoué avec la sortie de valeur: 3"
Regardant le printemps-source de démarrage, il semble que si il utilise un classloader personnalisé:
J'ai aussi une "ClassNotFoundException" lorsque vous essayez d'exécuter ma méthode principale directement.
java -cp my.jar mon.MainClass
Est-il une méthode que je peux utiliser pour exécuter ma méthode principale dans le ressort de démarrage pot (pas via JarLauncher)?
Quelqu'un a réussi à intégrer spring-boot avec procrun?
Je suis conscient de http://wrapper.tanukisoftware.com/. Cependant, en raison de leur permis de conduire, je ne peux pas l'utiliser.
Mise à JOUR
J'ai maintenant réussi à démarrer le service de l'aide procrun.
set SERVICE_NAME=MyService
set BASE_DIR=C:\MyService\Path
set PR_INSTALL=%BASE_DIR%prunsrv.exe
REM Service log configuration
set PR_LOGPREFIX=%SERVICE_NAME%
set PR_LOGPATH=%BASE_DIR%
set PR_STDOUTPUT=%BASE_DIR%stdout.txt
set PR_STDERROR=%BASE_DIR%stderr.txt
set PR_LOGLEVEL=Error
REM Path to java installation
set PR_JVM=auto
set PR_CLASSPATH=%BASE_DIR%%SERVICE_NAME%.jar
REM Startup configuration
set PR_STARTUP=auto
set PR_STARTIMAGE=c:\Program Files\Java\jre7\bin\java.exe
set PR_STARTMODE=exe
set PR_STARTPARAMS=-jar#%PR_CLASSPATH%
REM Shutdown configuration
set PR_STOPMODE=java
set PR_STOPCLASS=TODO
set PR_STOPMETHOD=stop
REM JVM configuration
set PR_JVMMS=64
set PR_JVMMX=256
REM Install service
%PR_INSTALL% //IS//%SERVICE_NAME%
J'ai maintenant juste besoin de séance d'entraînement de savoir comment arrêter le service. Je suis la pensée de faire quelque chose avec le printemps-démarrage de l'actionneur de l'arrêt de JMX Bean.
Ce qui se passe quand j'ai arrêter le service est à l'heure actuelle, windows ne parvient pas à arrêter le service (mais la marque comme à l'arrêt), le service est toujours en cours (je peux parcourir localhost), Il ne mentionne pas le processus dans le gestionnaire des tâches (Pas très bon! sauf si je suis aveugle).
java -jar my.jar
en quelque sorte pour démarrer le service. Quand sur windows, vous pouvez toujours utiliser un fichier de commandes pour lancer le service... Voir stackoverflow.com/questions/415409/...Je me doutais bien que c'était le cas. J'ai d'abord pensé spring boot est seulement à l'aide de l'maven ombre plugin. Je vais regarder dans RunAsService comme suggéré dans votre lien
Il y a plus de suggestions dans le fil, vous pourriez vouloir essayer. NSSM a l'air prometteur.
J'espère que la solution je l'ai mentionné fonctionne pour vous, j'avais été dans la même et a été en mesure d'obtenir cette mise en place sans trop de difficultés et a travaillé sans problème pour un certain temps maintenant.
Ceci est possible en utilisant le Printemps 1.3 docs.printemps.io/spring-boot/docs/1.3.x/de référence/htmlsingle/...
OriginalL'auteur roblovelock | 2014-06-09
Vous devez vous connecter pour publier un commentaire.
J'ai couru dans des problèmes similaires mais trouvé quelqu'un d'autre (Francesco Zanutto) a été assez aimable pour écrire un article de blog à propos de leurs efforts. Leur solution a fonctionné pour moi. Je ne vais pas prendre le crédit pour le temps qu'ils ont mis dans la réalisation de ce code.
http://zazos79.blogspot.com/2015/02/spring-boot-12-run-as-windows-service.html
Il s'agit d'utiliser la jvm de démarrer et d'arrêter le mode par rapport à l'exe en mode je vois dans votre exemple. Avec ceci, il est en mesure d'étendre le Printemps de Démarrage du JarLauncher de gérer à la fois "start" et "stop" de commandes de Windows services " qui, je crois, vous êtes à la recherche de le faire pour une fermeture en douceur.
Comme avec ses exemples, vous serez à l'ajout de plusieurs méthodes principales, en fonction de votre application, vous devrez indiquer ce qui devrait maintenant être invoquée par le lanceur. Je suis l'aide de Gradle et simplement dû ajouter ce qui suit à mon construire.gradle:
Mon Procrun script d'installation:
JarLauncher classe d'extension:
Mon de Printemps, la classe d'application:
Cela fonctionne vraiment très bien, jusqu'au Printemps de Démarrage de la version 1.3.X. En 1.4.0 il génère une erreur de compilation que createMainMethodRunner(mainClass, args, chargeur de classe); ne retourne pas Praticable.
Solution mis à jour par Francesco Zanutto pour le Printemps de Démarrage 1.4 est ici github.com/francesc79/test-procrun
OriginalL'auteur ethesx
C'est désormais possible depuis le Printemps de Démarrage 1.3 en utilisant winsw.
La la documentation vous dirige vers un l'implémentation de référence de qui montre comment installer un service.
OriginalL'auteur roblovelock
De springboot v1.2.2 il n'existe pas de moyen propre de l'arrêt d'un Printemps de Démarrage de l'application, emballé comme un uber pot, à l'aide de procrun. Assurez-vous de suivre ces questions que ce est quelque chose que les autres se posent à propos de:
Il n'est pas clair si/comment springboot responsables vont gérer ça. Dans l'intervalle, envisager de décompression de la uber pot et en ignorant le Printemps de Démarrage du JarLauncher.
Ma réponse à cette question (visible dans l'histoire) a proposé une solution qui devrait fonctionner (et j'ai pensé a fait), mais n'est pas dû à la façon dont le chargeur de classe est gérée dans JarLauncher.
org.springframework.boot.loader.SharedWarLauncher
ou dans votre casorg.springframework.boot.loader.SharedJarLauncher
) Ils ont décidé de ne pas fusionner, prétextant qu'ils ont ajouté la manière de les manipuler avec des MBeans.OriginalL'auteur kaliatech
Viens de tomber sur ce et je voulais le partager, j'ai résolu ce problème d'une tout à l'arrière et a publié une pull request. https://github.com/spring-projects/spring-boot/pull/2520
Vous pouvez utiliser ma fourche version jusqu'à ce qu'il est fusionné pour démarrer/arrêter l'aide de procrun.
Je suis content que ça vous a aidé! Je souhaite que la demande d'extraction ont été fusionnés, mais ils ont décidé d'utiliser des MBeans pour l'arrêt. Donc pour info, alors que la config peut ressembler à elle est efficace, si vous créez un package de votre application avec le spring-boot-plugin, il ne sera pas fermée correctement, car il va créer une nouvelle marque ApplicationContext lors de l'exécution de la
StopMethod
. C'est pourquoi j'ai ajoutéorg.springframework.boot.loader.SharedWarLauncher
qui tient le chargeur de classe entre l'invocation de démarrer ou d'arrêter. J'aurais facilement pu simplement modifiéorg.springframework.boot.loader.WarLauncher
à la place, mais a été en essayant d'être discret.Merci beaucoup pour votre réponse. J'avais pensé que tout fonctionnait comme prévu, mais quand j'ai regardé les logs, j'ai trouvé que l'application n'était pas de l'arrêt "propre" que vous mentionnez. Je n'ai pas besoin de la graisse pot dans mon déploiement, de sorte que je suis passé à un déploiement avec tous les pots dans un dossier lib et mis en œuvre un "stop" fonction similaire à la réponse de @ethesx
OriginalL'auteur DeezCashews
Rester à l'écart de winsw, Il est fait .NET, et j'ai l'expérience de beaucoup de problèmes à propos de mes clients, de l'environnement à propos de la date de Windows.
Je recommande NSSM, il est fait à l'aide de pure C, et je l'ai utilisé sur tous mes out-of-date, les Fenêtres sans problèmes. Il a les mêmes caractéristiques et plus...
Ici est un
batch script (.bat)
exemple de comment l'utiliser:OriginalL'auteur Beto Neto