質問
現在、別のJavaプロセスを監視し、特定のターゲットがヒットしたときに特定のアクションを実行するアプリを作成しています。たとえば、スレッドが一定時間デッドロックした場合、スレッドを強制終了し、メモリ使用量が特定の量を超えた場合、電子メールアラートを送信してプロセスを強制終了します。
私のアプリはスタンドアロンアプリとして実行され、特定の他のアプリを監視します(ただし、ローカルでも、リモートまたはローカルで確認できるものからは違いはありません)。
MXBeansを介して外部JVMを監視していますが、「kill -9」のようなシステムコール以外の外部プロセスを強制終了するクリーンな方法が見つかりません(ちなみにUNIXで作業しています)。
MXBeanインターフェースを介してJVMを強制終了する方法はありますか?
グラハム
解決
もちろん。 System.exit()
を呼び出すターゲットサーバーにMBeanを実装し、クライアントからJMX操作として呼び出します。
他のヒント
Springを使用している場合、その操作の1つが MBean操作。したがって、次のようになります。
@MBeanOperation(description="Kill the service")
public void die() {
System.exit();
}
...またはアプリケーションコンテキストを自分で停止します。
所属していません StackOverflow