2

MBean 操作の適切な例外処理戦略は何ですか? これらの操作の一部は失敗する可能性があり (接続されていないユーザーの削除など)、例外が報告されるはずですが、例外がどのように JMX レイヤーに浸透するのかわかりません。私の最良のアイデアは、C スタイルのリターン コードです。

4

1 に答える 1

5

これは、 MBeanServerConnection.invokeからスローされると宣言されているjavax.management.MBeanExceptionの意図です。JavaDoc から引用するには:

エージェントの MBean メソッドによってスローされる「ユーザー定義」の例外を表します。スローされた実際の「ユーザー定義」例外を「ラップ」します。

したがって、不可解な整数コード (または大きいほど良い場合は BigDecimal ;) を返すのではなく、「ビジネス例外」をトラップし、ビジネス例外を使用して新しい MBeanException を作成し、それをスローします。ビジネス例外がシリアライズ可能であり、呼び出し元のクラスパスに存在する場合、呼び出し元は JMX 例外をアンラップしてビジネス例外に到達できるはずです。

これらの仮定のいずれかが当てはまらない場合は、ビジネス例外クラス名とメッセージに基づいてメッセージを作成し、新しい Exception から MBeanException を作成して (スタック トレースを取得します)、新しいエラー メッセージを取得します。

于 2012-09-10T21:15:08.963 に答える