jmx java。lang:type=Runtime不是接口java的实例。朗,管理层。RuntimeMXBean
final RuntimeMXBean remoteRuntime =
ManagementFactory.newPlatformMXBeanProxy(
serverConnection,
ManagementFactory.RUNTIME_MXBEAN_NAME,
RuntimeMXBean.class);
服务器连接基本上就是连接到jmx服务器
基本上,这段代码运行良好。让我解释一下:
这段代码的第一次调用调用服务器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类管理的
# 1 楼答案
问题在于我自己的MBeanServer实现
如果传入的objectName返回空对象,则isInstanceOf()方法返回false。事实证明,这种情况发生在所有运行时类中,因此在阅读了类加载器部分下的http://tim.oreilly.com/pub/a/onjava/2005/01/26/classloading.html之后,我发现我的类加载器实现不正确,并且加载不正确
解决方法就是在这些运行时类的isInstanceOf()中返回true