2010-09-22 36 views
0
final RuntimeMXBean remoteRuntime = 
       ManagementFactory.newPlatformMXBeanProxy(
         serverConnection, 
        ManagementFactory.RUNTIME_MXBEAN_NAME, 
        RuntimeMXBean.class); 

其中serverConnection基本上连接到jmx服务器。java.lang:type = Runtime不是接口java.lang.management.RuntimeMXBean的实例

基本上正在进行的是,这段代码工作正常。让我解释一下:

这段代码的第一个调用调用服务器A,然后我抓取一些数据并将其存储到一个xml文件中。使用这些信息,启动一个新的服务器B.然后,想验证B,我想刮B来比较元数据。但是,当我运行它,我得到的异常

 java.lang.IllegalArgumentException: java.lang:type=Runtime is not an instance of interface java.lang.management.RuntimeMXBean 
     at java.lang.management.ManagementFactory.newPlatformMXBeanProxy(ManagementFactory.java:617 

)

但是,不知道这里有什么变化,因为那些给我的问题的参数由ManagementFactory类我没有控制管理。

回答

0

问题出在我自己的MBeanServer实现上。

如果传入的objectName返回一个空对象,我已经为isInstanceOf()方法返回false。事实证明,这发生在所有运行时类,所以在读取类加载器部分下的http://tim.oreilly.com/pub/a/onjava/2005/01/26/classloading.html后,我去了一个事实,即我的ClassLoaderImplementation是不正确的,并加载了这些错误。

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