0
final RuntimeMXBean remoteRuntime = 
                ManagementFactory.newPlatformMXBeanProxy(
                        serverConnection,
                    ManagementFactory.RUNTIME_MXBEAN_NAME,
                    RuntimeMXBean.class);

serverConnectionが基本的にjmxサーバーに接続している場合。

基本的に何が起こっているのかというと、このコードは正常に機能します。説明させてください:

このコードの最初の呼び出しはサーバーAを呼び出し、次にサーバーAのデータを取得して、xmlファイルに保存します。この情報を使用して、新しいサーバーBを起動します。

次に、Bを検証する際に、メタデータを比較するためにBをスクレイプしたいと思います。しかし、それを実行すると、例外が発生します

    java.lang.IllegalArgumentException:java.lang:type=Runtimeはインターフェースjava.lang.management.RuntimeMXBeanのインスタンスではありません
        java.lang.management.ManagementFactory.newPlatformMXBeanProxy(ManagementFactory.java:617で

)。

しかし、問題を引き起こしているパラメーターは、私が制御できないManagementFactoryクラスによって管理されているため、ここで何が変わるかはわかりません。

4

1 に答える 1

0

問題は、私自身のMBeanServerの実装にありました。

渡されたobjectNameがnullObjectを返した場合、isInstanceOf()メソッドに対してfalseを返すようにしました。これはすべてのランタイムクラスで発生したことが判明したため、クラスローダーセクションのhttp://tim.oreilly.com/pub/a/onjava/2005/01/26/classloading.htmlを読んだ後、私は次のことを行いました。私のClassLoaderImplementationが正しくなく、これらを正しくロードしていませんでした。

回避策は、これらのRunTimeクラスのisInstanceOf()でtrueを返すことだけでした。

于 2010-09-23T17:49:52.307 に答える