スタンドアロン Java アプリケーションがあります。現時点では、クラスパスを設定してから実行する開始スクリプト、つまり、Windows の startApplicatoin.bat と Linux の startApplicatoin.sh を使用して、この Java アプリケーションを実行しています: java -classpath 。
ここで、stopApplication.bat および stopApplication.sh スクリプトを追加する必要があります。この停止スクリプトは、この Java アプリケーションを正常にシャットダウン/閉じる必要があります。
これを達成するために、次の手順を実行する予定です。
1. Java アプリケーションが実行されると、起動されたアプリケーションのプロセス ID が既知のファイル myapplication.pid に保存されます。
ManagementFactory.getRuntimeMXBean().getName() 呼び出しは、Linux と Windows の両方で動作し、プロセス ID を取得するようです。このようにしてプロセス ID を収集し、指定されたファイル myapplication.pid に格納します。
2.アプリケーション停止スクリプトを実行すると、このスクリプトは myapplication.pid ファイルで指定されたプロセス ID に「kill」リクエストを発行します。
Windows の場合、「taskkill」コマンドを実行してこのアプリケーションを停止します。Linux 環境では、「kill」コマンドがその目的を果たします。
そして、私のJavaコードでは、実行したい正常なシャットダウン操作を有効にするaddShutdownHookを追加します。つまり、このプログラムが停止する前に、保持したいものを処理します。
今、私が考えている方法が適切な方法であることを確認するために、健全性チェックを行いたいと思います。または、これを行うより良い方法があります。どんな提案でも大歓迎です。そして、前もって感謝します。