У меня есть JAR файл, и я хочу зарегистрироваться и запустить его как службу Windows. Благодаря хорошо сконфигурированному JAR и уже зарегистрированным JVM-защелкам, это не должно быть большой работой для этого.
У меня уже есть JAR с внешним lib
dir, я могу запустить его с java -jar My.jar
и остановиться с Ctrl+C
.
Я также проверил JSL, JSmooth и прокрутку из Apache без рабочего решения.
Мне нужно рабочее решение с хорошим учебником.
Обновление: Мне удалось выполнить как прокрутку (наконец), так и ручную сервисную оболочку .net. Вот код для прокрутки моей версии install.bat:
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%
Я предполагаю, что
- запустите это из той же директории, где jar и prunsrv.exe
- у jar есть работа MANIFEST.MF
- и у вас есть завершающие крючки, зарегистрированные в JVM (например, с context.registerShutdownHook() в Spring)...
- не использовать относительные пути для файлов за пределами jar (например, log4j следует использовать с log4j.appender.X.File = ${app.home}/logs/my.log или что-то подобное)
Благодаря команде прокрутки apache (http://commons.apache.org/proper/commons-daemon//procrun.html) и marifnst (http://a089lp.wordpress.com/tag/procrun-tutorial/)
Обновление 2: новый хороший учебник с winsv: https://dzone.com/articles/spring-boot-as-a-windows-service-in-5-minutes