这个问题是我项目中遇到的一个问题,在ItEye问问中也问过,不过没有得到回复。有ItEye的朋友也遇到了这个问题写信问我,我在这里再描述下这个问题还有解决的办法。
问题描述:
我在sailfin启动JMXserver(自己开发的)加载 MBean(自己开发的)加载不上。 (tomacat也是同样效果)
在控制台写了个main方法直接启动JMXServer 就一切正常 真是怪呀。。。。
报的异常是这样的:
1.javax.management.ReflectionException: <SPAN style="COLOR: #ff0000">The MBean class could not be loaded by the default loader repository
2.</SPAN> at com.sun.jmx.mbeanserver.MBeanInstantiator.findClassWithDefaultLoaderRepository(MBeanInstantiator.java:71)
3. at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.createMBean(DefaultMBeanServerInterceptor.java:259)
4. at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.createMBean(DefaultMBeanServerInterceptor.java:199)
5. at com.sun.jmx.mbeanserver.JmxMBeanServer.createMBean(JmxMBeanServer.java:393)
com.hundsun.mproxy.service.MProxy是我自己开发的 MBean
问题是我自己开发的mBean 在sailfin或者tomcat运行的情况下不能注册到(我自己开发的JMXserver中)。
正常application run就能注册到(我自己开发的JMXserver中)。
我后来解决的方案(仅供参考):
后来我将MBean(自己开发的)直接注册到了sailfin的JMXserver中。(tomcat也是直接注册到tomcat的本身的JMXServer中)
这样就解决了这个问题。
*注:sailfin是可以直接在4848登陆的控制界面的MBean中部署的,部署之后会生成一个"名字",用这个"名字"就可以去sailfin自带的JMXServer中访问你自己的mBean了。