8

現在、別の Java プロセスを監視し、特定のターゲットがヒットしたときに特定のアクションを実行するアプリを作成しています。たとえば、スレッドが一定時間デッドロックした場合はスレッドを強制終了し、メモリ使用量が特定の量を超えた場合は電子メール アラートを送信してプロセスを強制終了します。

私のアプリはスタンドアロン アプリとして実行され、特定の他のアプリを監視します (ただし、ここではリモートまたはローカルに違いはありません)。

MXBeans 経由で外部 JVM を監視していますが、'kill -9' のようなシステム コール以外に外部プロセスを強制終了するクリーンな方法が見つかりません (ところで、私は UNIX で作業しています)。

MXBean インターフェイスを介して JVM を強制終了する方法はありますか?

グラハム

4

2 に答える 2

8

もちろん。を呼び出すターゲットサーバーにMBeanを実装し、System.exit()それをクライアントからJMX操作として呼び出します。

于 2009-10-28T10:48:41.020 に答える
2

Spring を使用している場合は、Bean にアノテーションを付けて、操作の 1 つをMBean 操作として公開することができます。したがって、次のようになります。

@MBeanOperation(description="Kill the service")
public void die() {
  System.exit();
}

...または、アプリケーション コンテキストを自分で停止することもできます。

于 2009-10-28T11:43:21.457 に答える