@Override public void cacheManagerStopping(GlobalComponentRegistry gcr) { if (interpreterObjName != null) { GlobalJmxStatisticsConfiguration jmxConfig = gcr.getGlobalConfiguration().globalJmxStatistics(); MBeanServer mbeanServer = JmxUtil.lookupMBeanServer(jmxConfig.mbeanServerLookup(), jmxConfig.properties()); try { JmxUtil.unregisterMBean(interpreterObjName, mbeanServer); } catch (Exception e) { log.jmxUnregistrationFailed(); } } } }
@Override public void cacheManagerStarted(GlobalComponentRegistry gcr) { // This works because the interpreter is not yet used internally, otherwise it would have to be in cacheManagerStarting GlobalJmxStatisticsConfiguration globalCfg = gcr.getGlobalConfiguration().globalJmxStatistics(); MBeanServer mbeanServer = JmxUtil.lookupMBeanServer(globalCfg.mbeanServerLookup(), globalCfg.properties()); String groupName = getGroupName(globalCfg.cacheManagerName()); Interpreter interpreter = new Interpreter(); gcr.registerComponent(interpreter, Interpreter.class); // Pick up metadata from the component metadata repository ManageableComponentMetadata meta = gcr.getComponentMetadataRepo().findComponentMetadata(Interpreter.class) .toManageableComponentMetadata(); // And use this metadata when registering the transport as a dynamic MBean try { ResourceDMBean mbean = new ResourceDMBean(interpreter, meta); interpreterObjName = new ObjectName(String.format("%s:%s,component=Interpreter", globalCfg.domain(), groupName)); JmxUtil.registerMBean(mbean, interpreterObjName, mbeanServer); } catch (Exception e) { interpreterObjName = null; log.jmxRegistrationFailed(); } }
mbeanServer = JmxUtil.lookupMBeanServer(jmxConfig.mbeanServerLookup(), jmxConfig.properties());
assertTrue(gc.globalJmxStatistics().allowDuplicateDomains()); assertEquals("funky_domain", gc.globalJmxStatistics().domain()); assertTrue(gc.globalJmxStatistics().mbeanServerLookup() instanceof PerThreadMBeanServerLookup);
assertTrue(g.globalJmxStatistics().enabled()); assertEquals("my-domain", g.globalJmxStatistics().domain()); assertTrue(g.globalJmxStatistics().mbeanServerLookup() instanceof CustomMBeanServerPropertiesTest.TestLookup); assertEquals(1, g.globalJmxStatistics().properties().size()); assertEquals("value", g.globalJmxStatistics().properties().getProperty("key"));