MBeanServer and TCL for MBeans
kabirkhan Oct 28, 2010 6:20 PMI have updated the MBeanServerService to use an MBeanBuilder to create the TcclMBeanServer since when trying out org.jboss.mx:jboss-mbeanserver, I was seeing errors like this:
Caused by: javax.management.JMRuntimeException: Failed to load MBeanServerBuilder class org.jboss.as.jmx.tcl.TcclMBeanServerBuilder: java.lang.ClassNotFoundException: org.jboss.as.jmx.tcl.TcclMBeanServerBuilder from [Module "module:org.jboss.as.transactions:main" from default]
at javax.management.MBeanServerFactory.checkMBeanServerBuilder(MBeanServerFactory.java:480) [:1.6.0_22]
at javax.management.MBeanServerFactory.getNewMBeanServerBuilder(MBeanServerFactory.java:511) [:1.6.0_22]
at javax.management.MBeanServerFactory.newMBeanServer(MBeanServerFactory.java:298) [:1.6.0_22]
at javax.management.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:213) [:1.6.0_22]
at javax.management.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:174) [:1.6.0_22]
at sun.management.ManagementFactory.createPlatformMBeanServer(ManagementFactory.java:302) [:1.6.0_22]
at java.lang.management.ManagementFactory.getPlatformMBeanServer(ManagementFactory.java:504) [:1.6.0_22]
at com.arjuna.ats.arjuna.tools.osb.util.JMXServer.getServer(JMXServer.java:88)
at com.arjuna.ats.arjuna.tools.osb.util.JMXServer.registerMBean(JMXServer.java:105)
at com.arjuna.ats.arjuna.tools.osb.mbean.ObjStoreBean.register(ObjStoreBean.java:136)
at com.arjuna.ats.arjuna.tools.osb.mbean.ObjStoreBean.getObjectStoreBrowserBean(ObjStoreBean.java:83)
at com.arjuna.ats.arjuna.tools.osb.mbean.ObjStoreBean.getObjectStoreBrowserBean(ObjStoreBean.java:73)
at org.jboss.as.txn.TransactionManagerService.start(TransactionManagerService.java:144)
... 4 more
Caused by: java.lang.ClassNotFoundException: org.jboss.as.jmx.tcl.TcclMBeanServerBuilder from [Module "module:org.jboss.as.transactions:main" from default]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:194) [:1.0.0.Beta8]
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:270) [:1.0.0.Beta8]
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:52) [:1.0.0.Beta8]
at javax.management.MBeanServerFactory.loadBuilderClass(MBeanServerFactory.java:423) [:1.6.0_22]
at javax.management.MBeanServerFactory.checkMBeanServerBuilder(MBeanServerFactory.java:465) [:1.6.0_22]
... 16 more
So to make sure that all MBeans get the intended TCCL behaviour this is now using a builder initialized by MBeanServerService. Services, like the TransactionManagerService which internally in the arjuna code does not use an injected MBeanServer need their module to import org.jboss.as.jmx.module and their service to depend on the MBeanServerService.