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

serverConnection 基本上只是连接到 jmx 服务器。

基本上发生的事情是,这段代码工作正常。让我解释:

这段代码的第一次调用调用了服务器 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 返回一个空对象,我让它为 isInstanceOf() 方法返回 false。事实证明,这发生在所有运行时类中,所以在阅读了类加载器部分下的http://tim.oreilly.com/pub/a/onjava/2005/01/26/classloading.html之后,我接受了这样一个事实我的 ClassLoaderImplementation 不正确,并且加载不正确。

解决方法只是在这些 RunTime 类的 isInstanceOf() 中返回 true。

于 2010-09-23T17:49:52.307 回答