SpringのようなアノテーションベースのJMX機能をどのように実装しますか。クラスがマークされ@ManagedResource
たクラスのメソッドによってマークされている場合、 @ManagedOperation
JMXを介して自動的に公開されます。
MBean表記でインターフェースを作成することは避けたいと思います。PlaywithGuiceフレームワークを使用しています。素朴なアプローチが最初に思い浮かびます:
- Guiceが管理するすべてのクラスを反復処理します
- クラスがアノテーションでマークされている場合は、MBeanアノテーションに適合する新しいインターフェースを作成します。クラスを修正します。修正されたクラスは、新しく作成されたインターフェイスを実装する必要があります。
- クラスのインスタンスをMBeanサーバーに登録します。
2番目のステップは、ASMなどのバイトコード操作ツールを使用して実行されます。ASMでそれを行うことは可能ですか?そのような機能をどのように実装しますか?