2009-08-18 12 views
3

私はJBoss 4.2.2で動作するWebアプリケーションを持っています。特定のMBeanServerを使用するようにSpringのMBeanExporterを強制する

-Dcom.sun.management.jmxremote 

をJBossの起動スクリプトへ:パフォーマンスを監視するために、私は、Java 5に付属言い換えれば、私は追加の内部プラットフォームのJMXサーバーを有効にしています。これは期待どおりに動作します。ただし、この結果、すべてのMBeanがプラットフォームMBeanServerに登録されます。私はそれを望んでいません、私はそれらをJBossのMBeanServerに登録します。

難易度は、私がマネージドBeanを登録するためにSpringを使用することにあります。このためには、MBeanExporterが使用されます。したがって、私はMBeanExporterにBeanの登録時にJBossのMBeanServerを使用するように指示する必要があります。ただし、MBeanExporterでどのサーバーが使用されているかに影響する唯一の公開方法はsetServer(MBeanServer mBeanServer)です。問題は、正しいMBeanServer への参照をプログラム的にに取得する方法しか知りませんが、MBeanExporterが宣言されているSpringのXMLでは認識されません。

私のオプションがあるように思われる:正しいのMBeanServerが

  • は、JBossのMBeanServerのを発見し、その後setServer
  • を呼び出すPostBeanProcessorを書くロードされるように

    1. は、特定のメソッドをオーバーライドし、MBeanExporterにサブクラスを書きますJNDI? MBeanServerがJNDIで公開されていて、それを見つけることができなかった場合にのみ動作します。

    最も慣用的な方法は何ですか?私は何か本当にばかげていますか?

  • 答えて

    6

    あなたはMBeanExporterへのMBeanServerを注入するのJBoss APIから静的なファクトリメソッドを使用することができます。afterPropertiesSetがMBeanExporterに呼び出される前に

    <bean class="org.springframework.jmx.export.MBeanExporter"> 
        <property name="server"> 
         <bean class="org.jboss.mx.util.MBeanServerLocator" factory-method="locateJBoss"/> 
        </property> 
        <!-- Add the rest of your MBeanExporter properties here --> 
    </bean> 
    
    +0

    素晴らしい!これはまさに私が探していたものです。私はこれまでファクトリメソッドを使っていましたが、この使い方には完璧であるとは思えませんでした。 – waxwing

    0

    問題は、私はあなただけは、プログラムの参照を取得できた場合は、なぜあなたはMBeanExporterを通してそれをワイヤすることはできません プログラムで

    正しい のMBeanServerへの参照を取得する方法を知っているということです#serverプロパティ?

    +0

    はい、私はそれを行う必要があります。私はPostBeanProcessorでこれを達成できます。これは、私が傾けている解決策です...しかし、私は、本当に複雑な方法で本当に簡単な何かをやっているように感じています。 – waxwing

    +0

    適切なMBeanServerへの参照で "server"プロパティを設定できないのはなぜですか? – Kevin

    +0

    これをプログラムで行うと、setServerを呼び出すための適切な場所が必要になります。そして、SpringがBeanを作成した後でなければなりませんが、SpringがBeanのafterPropertiesSetを呼び出す前に(これはMBeanServerが使用されるためです)。理想的には、XMLで設定しますが、スカフマンが私にどのように表示されるかを知るまで、それを行う良い方法は見つけられませんでした。 – waxwing

    関連する問題