2

私はSpringブートgradleプラグイン(org.springframework.boot)を使って "one" jarを生成しています。 java -jar app.jarを実行するとうまく動作します。ただし、このアプリケーションはJNI経由でApache Commons Daemonを使用してデーモンとして実行する必要があります。このアプリケーションの以前のバージョンは自家製のフレームワークの上に構築されました。私はstartshutdownメソッドをデーモンの設定で指定できるメインクラスに持っていました。Springブートで生成された1つのjarにJNIフックを追加するには

メインクラスがorg.springframework.boot.loader.JarLauncherになり、startshutdownメソッドがどこにでも実装されていないか、superclassesになっています。 launchメソッドがありますが、私はそれがjava -jarでjarファイルを実行するためにしか動かないと思います。ここで

は逆コンパイル1瓶のGradleのプラグインや内容によって生成されたマニフェストファイル(編集済み)である:

Manifest-Version: 1.0 
Start-Class: com.company.myapp.Application 
Spring-Boot-Classes: BOOT-INF/classes/ 
Spring-Boot-Lib: BOOT-INF/lib/ 
Spring-Boot-Version: 1.5.6.RELEASE 
Main-Class: org.springframework.boot.loader.JarLauncher 

enter image description here

私の質問は次のようになります。私は追加するには、このGradleのプラグインを設定することができますJNIは私のアプリのメインクラスを正しく動かすようにメソッドをフックしますか?私はGradleが "uber" jarを作るためのShadowプラグインがあることを知っています。また、 "uber" jarを作成してlib/ディレクトリ(デスクトップアプリケーション)に配布することもできません。しかし、Spring Bootの開発者がそれについて考えていて、これを行う方法がある場合、私はむしろそれを使用したいと思います。

答えて

0

jvmの代わりにStartMode=Javaを使用していますが、問題なく動作しているようです。唯一の問題は、私はSpring Bootが正常にシャットダウンしているとは思わないが、私は今のところそれで生きることができる。

MyApp.exe //IS//MyApp --Install="C:\appData\Programs\MyApp\MyApp.exe"^
--Startup=auto --StartMode=Java^
--JavaHome="C:\appData\Programs\Java"^
--Classpath="C:\appData\Programs\MyApp\MyApp.jar"^
--StartClass="org.springframework.boot.loader.JarLauncher"^
--ServiceUser="MyAppUser --ServicePassword="xxxxxx"^
--LogPath="C:\appData\Programs\MyApp\logs"^
--StartPath="C:\appData\Data\MyApp"^
--StopTimeout=30 

私は私のアプリ名「MyAppの」と一致したexeファイルを名前を変更し、私は、Windows Server上の64ビットJVMと64ビットのexeファイルを使用していました。システムのWindowsイベントビューアのService Userで奇妙なDCOMエラーが発生しましたが、いくつか再起動してサービスユーザーにこのフォルダのアクセス許可があることを確認してください。

+0

返信いただきありがとうございます@SlaterCodes。私はまだこのソリューションを試してみる必要があります。しかし、アプリケーションを正しくシャットダウンすることも重要です。私たちが行った解決策は、 'lib /'フォルダを持つ小さな瓶です。 SpringのJarLauncherを使わずに直接アクセスできるので、フックを管理する方が簡単でした。 –

+0

@SergePoeleはメモに感謝しています。私はこれをやり直して、より多くのプロダクションを準備しています。私はちょうど誰かがそれを少なくとも機能的にしたいと思った場合に答えることを望みました – SlaterCodes

関連する問題