15

JAR ファイルがあり、それを Windows サービスとして登録して実行したいと考えています。適切に構成された JAR と既に登録されている JVM シャットダウン フックを使用すると、これを行うのに大きな作業は必要ありません。

lib私はすでに外部ディレクトリを持つ JAR を持っていjava -jar My.jarますCtrl+C

また、Apache の JSL、JSmooth、および procrun も確認しましたが、解決策はありませんでした。

優れたチュートリアルを備えた実用的なソリューションが必要です。

更新: procrun (ついに) と手動の .net サービス ラッパーの両方で成功しました... 私の install.bat の procrun バージョンのコードは次のとおりです。

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に登録されたシャットダウンフックがあります(たとえば、Springのcontext.registerShutdownHook()を使用)...
  • jar 以外のファイルに相対パスを使用しない (たとえば、log4j はlog4j.appender.X.File=${app.home}/logs/my.logなどと一緒に使用する必要があります)

apache procrun チーム ( 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

4

3 に答える 3

7

このJavaランチャーを試してください

http://winrun4j.sourceforge.net/

無料でオープンソース

ページの最後にサービスの例を開始します

于 2013-02-27T14:47:10.670 に答える
5

これらのサンプルから独自のサービスを作成します。

あなたonStartがしなければならないことCreateProcess( "java", "-jar", "MyJar.jar" )に、そのPIDを保持してください

PIDonStopで殺す必要があります

于 2013-02-27T14:52:26.500 に答える
4

Java Service Wrapper を使用できます

http://wrapper.tanukisoftware.com/doc/english/download.jsp

コンパイル済みの x86_64 Windows バージョンの Comunity Edition は配布されていませんが、自分でビルドすることはできます。

于 2013-02-27T14:45:31.940 に答える