Utilisation de JavaService pour ajouter un service Windows


J'ai créé une application Java (exécute une boucle infinie) (avec de nombreux fichiers de classe Java) qui utilise également log4j.jar et `snmp4j.jar? . Afin d'exécuter l'application, je dois fournir quelques arguments d'entrée comme suit:

C:\APP>java myApp.class arg1 arg2 arg3 arg4 arg5 arg6

myApp.class contient le principal gestionnaire.

Cette application fonctionne bien sous l'exécution en ligne de commande. Cependant, je souhaite créer un service Windows pour cette application afin qu'elle s'exécute chaque fois que le PC est démarré. Aussi, si le service est en panne pour quoi que ce soit raison, il sera redémarré sous l'outil de services Windows.

J'ai essayé d'utiliser JavaService pour mon but, en exécutant la commande suivante:

C:\APP>JavaService.exe -install MyService "C:\java\jdk1.6.0.29\jre\bin\server\jvm.dll" -start myApp.class -params arg1 arg2 arg3 arg4 arg5 arg6
The MyService automatic service was successfully installed

Je peux voir mon MyService apparu sous Outils d'administration- > Services

Cependant, quand j'ai fait un début de MyService, il a commencé puis arrêté :(

Service dialog:
The MyService on Local Computer started and then stopped. Some services stop automatically if they have no work to do, for example, the Performance Logs and Alerts service.

Quelqu'un sait pourquoi?

Author: tanlccc, 2012-02-03

2 answers

Peut-être avez-vous besoin de spécifier le chemin de classe?

Vous le faites avec un paramètre comme celui-ci:

-Djava.class.path={JDK_HOME}\lib\tools.jar;<your jar 1>;<your jar 2>

Par exemple, nous utilisons un script pour installer JBoss, similaire à celui discuté / montré ici: https://community.jboss.org/wiki/JavaService

HTH

 1
Author: davidfrancis, 2012-02-03 10:16:43

Tout d'abord, si vous utilisez la JVM 64 bits, vous devez utiliser JavaService 64 bits. Sinon, vous obtiendrez l'erreur suivante dans les journaux d'Événements Windows:

La fonction LoadLibrary a échoué pour la raison suivante: LoadLibrary n'est pas une application Win32 valide.

Deuxièmement, utilisez les paramètres -out et -err de JavaService pour enregistrer stdout et stderr à partir de votre code java.

 0
Author: Dzwiedziu-nkg, 2016-08-31 22:08:46