いくつかのJavaアプリを実行していますが、Windowsのbatスクリプトからすべてのアプリを正常にシャットダウン/閉じる必要があります。だから私の質問は:
Windowsのbatスクリプトでシャットダウンフックを呼び出し、Javaプログラムを正常にシャットダウンする方法です。
任意の提案をいただければ幸いです。前もって感謝します。
いくつかのJavaアプリを実行していますが、Windowsのbatスクリプトからすべてのアプリを正常にシャットダウン/閉じる必要があります。だから私の質問は:
Windowsのbatスクリプトでシャットダウンフックを呼び出し、Javaプログラムを正常にシャットダウンする方法です。
任意の提案をいただければ幸いです。前もって感謝します。
クラスのaddShutdownHookメソッドを見てくださいRuntime
。
Runtime.getRuntime().addShutdownHook(...);
更新: 以下のコメントによると、Windows シェルには *nix kill コマンドに似たコマンド TASKKILL があります。たとえば、TASKKILL /IM java.exe
すべての Java プロセスを終了します。TASKLIST
実行中のすべてのプロセスを見つけるために使用できます。これを shutdownhook と組み合わせて使用すると、必要な優雅な可能性が得られます。
Java での「正常な」シャットダウンは、通常、すべての非デーモン スレッドが正常に作業を完了できるようにすることで実現されます。アプリにポートで「シャットダウン」コマンドをリッスンさせる場合、スクリプトでそのポートへのコマンドをトリガーすることができます。これを使用して、スレッドの動作を停止する適切なフラグを設定し、JVM をシャットダウンさせることができます。 . それはおそらく私が見た中で最も簡単な方法です。
.bat スクリプトは、VM の外部のプロセスになります。そのため、Java アプリケーションにある種の IPC を実装する必要があります。いくつかの比較的単純なオプションは、RMI または JMX を使用することができます。
他の可能性は、アプリケーションで監視でき、.bat スクリプトで変更できるファイルを使用して、他のプロセスがシャットダウンする必要があることを認識できるようにすることです。