Использование JavaService для добавления службы Windows - PullRequest
1 голос
/ 03 февраля 2012

Я создал приложение Java (работает с бесконечным циклом) (со многими файлами классов Java), которое также использует log4j.jar и `snmp4j.jar? , Чтобы запустить приложение, мне нужно предоставить следующие входные аргументы:

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

где myApp.class содержит основной обработчик.

Это приложение отлично работает в режиме командной строки. Однако я хочу создать службу Windows для этого приложения, чтобы оно работало при каждом запуске ПК. Кроме того, если служба по какой-либо причине не работает, она будет перезапущена с помощью средства служб Windows.

Я попытался использовать JavaService для своих целей, выполнив следующую команду:

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

Я вижу, что мой MyService появился в разделе Администрирование-> Службы

Однако, когда я запустил MyService, он запустился, а затем остановился: (

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.

Кто-нибудь знает почему?

Ответы [ 2 ]

1 голос
/ 03 февраля 2012

Возможно, вам нужно указать classpath?

Вы делаете это с такой настройкой:

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

В качестве примера мы используем скрипт для установки JBoss, подобный тому, который обсуждался / показывался здесь: https://community.jboss.org/wiki/JavaService

НТН

0 голосов
/ 01 сентября 2016

Во-первых, если вы используете 64-битную JVM, вы должны использовать 64-битную JavaService. В противном случае вы получите следующую ошибку в журнале событий Windows:

Функция LoadLibrary не выполнена по следующей причине: LoadLibrary не является допустимым приложением Win32.

Во-вторых, используйте -out и -err параметры JavaService для регистрации stdout и stderr из вашего кода Java.

...