Java で管理 Bean を使用する場合、そのインターフェースは MBean インターフェースを介して公開されます。ただし、MBean を介して公開するさまざまなパラメーターがある場合。また、システムのバージョンが異なると、多くの新しいパラメータが MBean に追加または削除される可能性があり、そのようなシステムを管理するのは非常に面倒になります。
このような問題を回避するために使用できる設計パターンはありますか?
物事を動的に実行したい場合は、マネージ クラスのどのフィールドやメソッドを公開し、どのフィールドを公開しないかを動的に決定するための論理的な規則が必要です。
ここで、 Dynamic MBeanを実装し(ここでわかりやすい例を参照)、リフレクションを使用してマネージド クラスの最新情報を収集できる可能性があります。反映されたクラス情報は、前述のルールに照らしてフィルタリングする必要があります (他のすべてのプログラマーがそれに従うことを願っています! 私はそれを期待しません)。
OK、これはデザイン パターンではありません。実際に推奨されるパターンは、特定のプロパティを追加するプログラマーが、それを公開する価値があるかどうか、および公開しても安全かどうかについて少し時間を割く必要があるということだと思います。また、プロパティを削除するときは、既存のクライアント コードが壊れないかどうかを検討する必要があります。
はい、インターフェイスを使用します。MBean のプロバイダーとコンシューマーが smae Java インターフェースを使用していることを確認してください。
プロバイダー部分については、Spring がインターフェースから MBean を組み立てる方法を見てください。
コンシューマー側では、インターフェースを取り、それを MBean アクセス操作に変換する MBean クライアントを作成することはそれほど難しくありません。