0

私は、Tomcatサーバー(ローカルで実行している)にデプロイするWARファイルを使用してSpringのJMXサポートを試しています。ただし、投稿されたガイドに従っているにもかかわらず、MBeanを特にTomcatのMBeanServerインスタンスにデプロイすることはできません。

MBeanExporterとMBeanServerFactoryBeanの構成のいくつかのバリエーションを試しましたが、何も機能していないようです。これが私の現在の構成です:

<bean id="mbeanServer" class="org.springframework.jmx.support.MBeanServerFactoryBean">
    <property name="serviceUrl" value="service:jmx:rmi:///jndi/rmi://localhost:6969/jmxrmi"/>
</bean> 

<bean id="exporter" class="org.springframework.jmx.export.MBeanExporter" lazy-init="false">
    <property name="server" ref="mbeanServer"/>
    <property name="beans">
        <map>
            <entry key="domain:name=notifier" value-ref="mBeanNotifier"/>
        </map>
    </property>
</bean>

<bean id="mBeanNotifier" class="com.sei.poc.jmx.mbeans.SimpleMBeanNotifier"/>

また、Tomcatの構成にも次の引数を含めました。

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=6969
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

JConsoleにlocalhost:6969と入力することで、mbeanServerに手動で接続できますが、ネイティブのカタリナMBeanしか見つかりません。それらのMBeanを掘り下げると、自分のプロジェクトへの参照さえ見つかりますが、残念ながら、私が宣言するMBeanはどこにも見つかりません。

エクスポータがtomcatのMBeanServerを自然に(運がなくても)取得できるようになることを期待して、MBeanServerFactoryBean宣言を削除しようとしました。サービスURLのさまざまなバリエーションも試しましたが、成功しませんでした。

MBeanをローカルのMBeanServerにデプロイし、JConsoleで問題なく表示できることに注意してください。

問題が何であるかについての提案は大歓迎です。

ありがとう!

4

2 に答える 2

2

ServiceURLを使用してMBeanServerConnectionを取得する場合、返されるオブジェクトはMBeanServerではありません(つまり、registerObjectをサポートしていません)。

mbeanServerBeanを次のように置き換えてみてください。

<bean id="mbeanServer" class="java.lang.management.ManagementFactory"
    lazy-init="false" factory-method="getPlatformMBeanServer">
</bean>

これにより、JConsoleが接続しているプラ​​ットフォームMBeanServerへの直接参照が提供されます。

于 2013-03-01T00:16:33.517 に答える
0

問題を解決することができました。私はこのテストをSpringMVCアプリケーションとして作成しているため、いくつかのレベルのコンテキストがあり、さまざまなコンテキストファイルに分割されています。

問題は、MBeanExporterとMBeanの宣言を保持するコンテキストファイルが、実際にlocalhost:/に移動するまで初期化されなかったことでした。これにより、サーブレットはコンテキストファイルのロードを開始しました。

ブラウザに接続した後、MBeanがJConsoleに表示されました。

于 2013-03-01T20:41:53.207 に答える