@Override public void start() { Jmx.register(OBJECT_NAME, this); }
/** * Unregister, if needed */ @Override public void stop() { Jmx.unregister(OBJECT_NAME); }
/** * Register a MBean to JMX server */ public static void register(String name, Object instance) { try { Class<Object> mbeanInterface = guessMBeanInterface(instance); ManagementFactory.getPlatformMBeanServer().registerMBean(new StandardMBean(instance, mbeanInterface), new ObjectName(name)); } catch (MalformedObjectNameException | NotCompliantMBeanException | InstanceAlreadyExistsException | MBeanRegistrationException e) { throw new IllegalStateException("Can not register MBean [" + name + "]", e); } }
@Test public void register_and_unregister() throws Exception { assertThat(lookupMBean()).isNull(); Jmx.register(FAKE_NAME, mbean); assertThat(lookupMBean()).isNotNull(); Jmx.unregister(FAKE_NAME); assertThat(lookupMBean()).isNull(); }
@Test public void support_implementation_in_different_package_than_interface() throws Exception { assertThat(lookupMBean()).isNull(); Jmx.register(FAKE_NAME, new org.sonar.process.jmx.test.Fake()); assertThat(lookupMBean()).isNotNull(); Jmx.unregister(FAKE_NAME); assertThat(lookupMBean()).isNull(); }
@Override public void start() { Jmx.register(OBJECT_NAME, this); }
@Override public void stop() { Jmx.unregister(OBJECT_NAME); }
@Override public void start() { Jmx.register(OBJECT_NAME, this); }
/** * Unregister, if needed */ @Override public void stop() { Jmx.unregister(OBJECT_NAME); }
/** * Auto-registers to MBean server */ @Override public void start() { Jmx.register(objectName(), this); }
/** * Unregister, if needed */ @Override public void stop() { Jmx.unregister(objectName()); }
@Test public void register_fails_if_mbean_interface_can_not_be_found() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Can not find the MBean interface of class java.lang.String"); Jmx.register(FAKE_NAME, "not a mbean"); }
@Test public void do_not_fail_when_unregistering_a_non_registered_bean() throws Exception { Jmx.unregister(FAKE_NAME); assertThat(lookupMBean()).isNull(); }
@Test public void register_fails_if_name_is_not_valid() { expectedException.expect(IllegalStateException.class); expectedException.expectMessage("Can not register MBean [/]"); Jmx.register("/", new Fake()); }
/** * Unregister, if needed */ @Override public void stop() { Jmx.unregister(OBJECT_NAME); }
@Override public void start() { Jmx.register(OBJECT_NAME, this); }
/** * Unregister, if needed */ @Override public void stop() { Jmx.unregister(OBJECT_NAME); }
@Override public void start() { Jmx.register(OBJECT_NAME, this); }
@Override public void stop() { Jmx.unregister(OBJECT_NAME); }
@Override public void start() { Jmx.register(OBJECT_NAME, this); }