/** * Factory method to create (if necessary) and return our * <code>MBeanServer</code> instance. * */ public synchronized MBeanServer getMBeanServer() { long t1=System.currentTimeMillis(); if (server == null) { if( MBeanServerFactory.findMBeanServer(null).size() > 0 ) { server = MBeanServerFactory.findMBeanServer(null).get(0); if( log.isDebugEnabled() ) { log.debug("Using existing MBeanServer " + (System.currentTimeMillis() - t1 )); } } else { server = ManagementFactory.getPlatformMBeanServer(); if( log.isDebugEnabled() ) { log.debug("Creating MBeanServer"+ (System.currentTimeMillis() - t1 )); } } } return (server); }
/** * Locate the MBean server to use based on user input from startup. * * @return The MBean server to use. */ private MBeanServer findServer() { if ( usePlatformServer ) { // they specified to use the platform (vm) server return ManagementFactory.getPlatformMBeanServer(); } // otherwise lookup all servers by (optional) agentId. // IMPL NOTE : the findMBeanServer call treats a null agentId to mean match all... ArrayList<MBeanServer> mbeanServers = MBeanServerFactory.findMBeanServer( agentId ); if ( defaultDomain == null ) { // they did not specify a domain by which to locate a particular MBeanServer to use, so chose the first return mbeanServers.get( 0 ); } for ( MBeanServer mbeanServer : mbeanServers ) { // they did specify a domain, so attempt to locate an MBEanServer with a matching default domain, returning it // if we find it. if ( defaultDomain.equals( mbeanServer.getDefaultDomain() ) ) { return mbeanServer; } } return null; }
private Object invoke(String objectName, String method, Object[] params, String[] types) throws Exception { MBeanServer server = (MBeanServer) MBeanServerFactory.findMBeanServer(null).get(0); ObjectName mbean = new ObjectName(objectName); if (server == null) { throw new Exception("Can't find mbean server"); } getLog().info("invoking " + method); return server.invoke(mbean, method, params, types); }
/** * Test the monitor notifications. */ public int monitorNotifications() throws Exception { server = MBeanServerFactory.newMBeanServer(); MBeanServerForwarderInvocationHandler mbsfih = (MBeanServerForwarderInvocationHandler) Proxy.getInvocationHandler(server); mbsfih.setGetAttributeException( new RuntimeException("Test RuntimeException")); domain = server.getDefaultDomain(); obsObjName = ObjectName.getInstance(domain + ":type=ObservedObject"); server.registerMBean(new ObservedObject(), obsObjName); echo(">>> ----------------------------------------"); int error = counterMonitorNotification(); echo(">>> ----------------------------------------"); error += gaugeMonitorNotification(); echo(">>> ----------------------------------------"); error += stringMonitorNotification(); echo(">>> ----------------------------------------"); return error; }
private JMXServiceURL createServerSide(Map<String, Object> serverMap) throws Exception { final int NINETY_SECONDS = 90; System.out.println("SecurityTest::createServerSide: Start") ; // Prepare server side security env HashMap<String, Object> env = setServerSecurityEnv(serverMap); // Create and start mbean server and connector server MBeanServer mbs = MBeanServerFactory.newMBeanServer(); JMXServiceURL url = new JMXServiceURL("rmi", null, 0); cs = JMXConnectorServerFactory.newJMXConnectorServer(url, env, mbs); cs.start(); // Waits availibility of connector server Utils.waitReady(cs, NINETY_SECONDS); JMXServiceURL addr = cs.getAddress(); System.out.println("SecurityTest::createServerSide: Done.") ; return addr; }
private static void testPrivate(Class<?> iface) throws Exception { try { System.out.println("Creating a proxy for private M(X)Bean " + iface.getName() + " ..."); MBeanServer mbs = MBeanServerFactory.newMBeanServer(); ObjectName on = new ObjectName("test:type=Proxy"); JMX.newMBeanProxy(mbs, on, iface); success("Created a proxy for private M(X)Bean - " + iface.getName()); } catch (Exception e) { Throwable t = e; while (t != null && !(t instanceof NotCompliantMBeanException)) { t = t.getCause(); } if (t != null) { fail("Proxy not created"); } else { throw e; } } }
public static void main(String[] args) throws Exception { if (System.getSecurityManager() == null) throw new IllegalStateException("No security manager installed!"); System.out.println("java.security.policy=" + System.getProperty("java.security.policy")); // Instantiate the MBean server // System.out.println("Create the MBean server"); MBeanServer mbs = MBeanServerFactory.createMBeanServer(); // Register the MLetMBean // System.out.println("Create MLet MBean"); ObjectName mlet = new ObjectName("MLetTest:name=MLetMBean"); mbs.createMBean("javax.management.loading.MLet", mlet); // Test OK! // System.out.println("Bye! Bye!"); }
private static void testCaseProb() throws Exception { MBeanServer mbs = MBeanServerFactory.newMBeanServer(); ObjectName name = new ObjectName("a:b=c"); mbs.registerMBean(new CaseProbImpl(), name); CaseProbMXBean proxy = JMX.newMXBeanProxy(mbs, name, CaseProbMXBean.class); try { CaseProb prob = proxy.getCaseProb(); fail("No exception from proxy method getCaseProb"); } catch (IllegalArgumentException e) { String messageChain = messageChain(e); if (messageChain.contains("URLPath")) { System.out.println("Message chain contains URLPath as required: " + messageChain); } else { fail("Exception chain for CaseProb does not mention property" + " URLPath differing only in case"); System.out.println("Full stack trace:"); e.printStackTrace(System.out); } } }
private static boolean test(Object mbean, boolean expectImmutable) throws Exception { MBeanServer mbs = MBeanServerFactory.newMBeanServer(); ObjectName on = new ObjectName("a:b=c"); mbs.registerMBean(mbean, on); MBeanInfo mbi = mbs.getMBeanInfo(on); Descriptor d = mbi.getDescriptor(); String immutableValue = (String) d.getFieldValue("immutableInfo"); boolean immutable = ("true".equals(immutableValue)); if (immutable != expectImmutable) { System.out.println("FAILED: " + mbean.getClass().getName() + " -> " + immutableValue); return false; } else { System.out.println("OK: " + mbean.getClass().getName()); return true; } }
private static void testNonCompliant(Class<?> iface, Object bean) throws Exception { try { System.out.println("Registering a non-compliant MBean " + iface.getName() + " ..."); MBeanServer mbs = MBeanServerFactory.newMBeanServer(); ObjectName on = new ObjectName("test:type=NonCompliant"); mbs.registerMBean(bean, on); fail("Registered a non-compliant MBean - " + iface.getName()); } catch (Exception e) { Throwable t = e; while (t != null && !(t instanceof NotCompliantMBeanException)) { t = t.getCause(); } if (t != null) { success("MBean not registered"); } else { throw e; } } }
private static void testPrivate(Class<?> iface, Object bean) throws Exception { try { System.out.println("Registering a private MBean " + iface.getName() + " ..."); MBeanServer mbs = MBeanServerFactory.newMBeanServer(); ObjectName on = new ObjectName("test:type=Compliant"); mbs.registerMBean(bean, on); success("Registered a private MBean - " + iface.getName()); } catch (Exception e) { Throwable t = e; while (t != null && !(t instanceof NotCompliantMBeanException)) { t = t.getCause(); } if (t != null) { fail("MBean not registered"); } else { throw e; } } }
private static void testCompliant(Class<?> iface, Object bean) throws Exception { try { System.out.println("Registering a compliant MBean " + iface.getName() + " ..."); MBeanServer mbs = MBeanServerFactory.newMBeanServer(); ObjectName on = new ObjectName("test:type=Compliant"); mbs.registerMBean(bean, on); success("Registered a compliant MBean - " + iface.getName()); } catch (Exception e) { Throwable t = e; while (t != null && !(t instanceof NotCompliantMBeanException)) { t = t.getCause(); } if (t != null) { fail("MBean not registered"); } else { throw e; } } }
/** * Factory method to create (if necessary) and return our * <code>MBeanServer</code> instance. * */ public synchronized MBeanServer getMBeanServer() { long t1 = System.currentTimeMillis(); if (server == null) { if (MBeanServerFactory.findMBeanServer(null).size() > 0) { server = MBeanServerFactory.findMBeanServer(null).get(0); if (log.isDebugEnabled()) { log.debug("Using existing MBeanServer " + (System.currentTimeMillis() - t1)); } } else { server = ManagementFactory.getPlatformMBeanServer(); if (log.isDebugEnabled()) { log.debug("Creating MBeanServer" + (System.currentTimeMillis() - t1)); } } } return (server); }
@Before public void registerToJMX() throws Exception { internalServer = MBeanServerFactory.createMBeanServer(); TestingFixedThreadPoolModuleFactory testingFixedThreadPoolConfigBeanFactory = new TestingFixedThreadPoolModuleFactory(); threadPoolConfigBean = testingFixedThreadPoolConfigBeanFactory.createModule("", null, null); threadPoolConfigBean.setThreadCount(threadCount); AbstractDynamicWrapper dynamicWrapper = getDynamicWrapper(threadPoolConfigBean, MODULE_IDENTIFIER); platformMBeanServer.registerMBean(dynamicWrapper, threadPoolDynamicWrapperON); }
public static MBeanServer getMBeanServer() throws Exception { if (mbeanServer == null) { if (MBeanServerFactory.findMBeanServer(null).size() > 0) { mbeanServer = MBeanServerFactory.findMBeanServer(null).get(0); } else { mbeanServer = MBeanServerFactory.createMBeanServer(); } } return mbeanServer; }
/** * Unregisters the {@code MBeanServer} instance, if necessary. */ @Override public void destroy() { if (this.newlyRegistered) { MBeanServerFactory.releaseMBeanServer(this.server); } }
/** * Attempt to find a locally running {@code MBeanServer}. Fails if no * {@code MBeanServer} can be found. Logs a warning if more than one * {@code MBeanServer} found, returning the first one from the list. * @param agentId the agent identifier of the MBeanServer to retrieve. * If this parameter is {@code null}, all registered MBeanServers are considered. * If the empty String is given, the platform MBeanServer will be returned. * @return the {@code MBeanServer} if found * @throws org.springframework.jmx.MBeanServerNotFoundException * if no {@code MBeanServer} could be found * @see javax.management.MBeanServerFactory#findMBeanServer(String) */ public static MBeanServer locateMBeanServer(String agentId) throws MBeanServerNotFoundException { MBeanServer server = null; // null means any registered server, but "" specifically means the platform server if (!"".equals(agentId)) { List<MBeanServer> servers = MBeanServerFactory.findMBeanServer(agentId); if (servers != null && servers.size() > 0) { // Check to see if an MBeanServer is registered. if (servers.size() > 1 && logger.isWarnEnabled()) { logger.warn("Found more than one MBeanServer instance" + (agentId != null ? " with agent id [" + agentId + "]" : "") + ". Returning first from list."); } server = servers.get(0); } } if (server == null && !StringUtils.hasLength(agentId)) { // Attempt to load the PlatformMBeanServer. try { server = ManagementFactory.getPlatformMBeanServer(); } catch (SecurityException ex) { throw new MBeanServerNotFoundException("No specific MBeanServer found, " + "and not allowed to obtain the Java platform MBeanServer", ex); } } if (server == null) { throw new MBeanServerNotFoundException( "Unable to locate an MBeanServer instance" + (agentId != null ? " with agent id [" + agentId + "]" : "")); } if (logger.isDebugEnabled()) { logger.debug("Found MBeanServer: " + server); } return server; }
private MBeanServer startMBeanServer() { try { return MBeanServerFactory.createMBeanServer( defaultDomain ); } catch ( Exception e ) { throw new HibernateException( "Unable to start MBeanServer", e ); } }
@Before public void setUp() throws Exception { super.setUp(); leakCheckRule.disable(); jmxServiceURL = "service:jmx:rmi://localhost/jndi/rmi://localhost:" + jmxPort + "/jmxrmi"; server = createServer(true, true); Configuration serverConfig = server.getConfiguration(); serverConfig.setJMXManagementEnabled(true); serverConfig.setName(brokerName); String dataDir = this.temporaryFolder.getRoot().getAbsolutePath(); serverConfig.setPagingDirectory(dataDir + "/" + serverConfig.getPagingDirectory()); serverConfig.setBindingsDirectory(dataDir + "/" + serverConfig.getBindingsDirectory()); serverConfig.setLargeMessagesDirectory(dataDir + "/" + serverConfig.getLargeMessagesDirectory()); serverConfig.setJournalDirectory(dataDir + "/" + serverConfig.getJournalDirectory()); mbeanServer = MBeanServerFactory.createMBeanServer(); server.setMBeanServer(mbeanServer); server.start(); factory = new ActiveMQConnectionFactory("tcp://localhost:61616"); objectNameBuilder = server.getManagementService().getObjectNameBuilder(); connectJmx(); System.out.println("server name: " + server.getConfiguration().getName()); emsFactory = new ConnectionFactory(); ConnectionSettings emsConnectionSettings = new ConnectionSettings(); JSR160ConnectionTypeDescriptor descriptor = new JSR160ConnectionTypeDescriptor(); emsConnectionSettings.initializeConnectionType(descriptor); emsConnectionSettings.setServerUrl(jmxServiceURL); ConnectionProvider provider = emsFactory.getConnectionProvider(emsConnectionSettings); emsConnection = provider.connect(); emsConnection.loadSynchronous(true); }
/** * Test the monitor notifications. */ public int monitorNotifications() throws Exception { server = MBeanServerFactory.newMBeanServer(); MBeanServerForwarderInvocationHandler mbsfih = (MBeanServerForwarderInvocationHandler) Proxy.getInvocationHandler(server); mbsfih.setGetAttributeException( new ReflectionException(new RuntimeException(), "Test ReflectionException")); domain = server.getDefaultDomain(); obsObjName = ObjectName.getInstance(domain + ":type=ObservedObject"); server.registerMBean(new ObservedObject(), obsObjName); echo(">>> ----------------------------------------"); int error = counterMonitorNotification(); echo(">>> ----------------------------------------"); error += gaugeMonitorNotification(); echo(">>> ----------------------------------------"); error += stringMonitorNotification(); echo(">>> ----------------------------------------"); return error; }
/** * * 启动JMXConnectorServer * * @author zhangshaobin * @created 2012-12-28 下午4:00:59 * * @throws IOException */ private void start() { if (null != server) return; try { // platformServer = ManagementFactory.getPlatformMBeanServer(); server = MBeanServerFactory.createMBeanServer("Asura"); JMXServiceURL url = new JMXServiceURL("jmxmp", null, port); // JMXServiceURL platformUrl = new JMXServiceURL("jmxmp", null, 9021); // platformConnectorServer = JMXConnectorServerFactory.newJMXConnectorServer(platformUrl, null, platformServer); // platformConnectorServer.start(); // System.out.println("JMX PlatformServer started! Used port 9020."); connectorServer = JMXConnectorServerFactory.newJMXConnectorServer(url, null, server); connectorServer.start(); System.out.println(new SimpleDateFormat("[yyyy-MM-dd HH:mm:ss] ").format(new Date()) + "JMX Server started! used port:" + port); } catch (Exception e) { e.printStackTrace(); System.out.println(new SimpleDateFormat("[yyyy-MM-dd HH:mm:ss] ").format(new Date()) + "JMX Server started failed!" + " " + e.getMessage()); System.exit(1); } }
private static Class<?> load(ClassLoader without, String className) throws ClassNotFoundException { final List<MBeanServer> mbsList = MBeanServerFactory.findMBeanServer(null); for (MBeanServer mbs : mbsList) { ClassLoaderRepository clr = mbs.getClassLoaderRepository(); try { return clr.loadClassWithout(without, className); } catch (ClassNotFoundException e) { // OK : Try with next one... } } throw new ClassNotFoundException(className); }
/** * Create and configure (if necessary) and return the <code>MBeanServer</code> with which we will * be registering our <code>ModelMBean</code> implementations. * * @see javax.management.MBeanServer */ static synchronized MBeanServer createMBeanServer() { if (mbeanServer == null) { mbeanServer = MBeanServerFactory.createMBeanServer(DEFAULT_DOMAIN); } return mbeanServer; }
/** * Standalone entry point. * * Run the test and report to stdout. */ public static void main(String args[]) throws Exception { echo(">>> Create MBeanServer"); MBeanServer server = MBeanServerFactory.newMBeanServer(); echo(">>> Default Domain: " + server.getDefaultDomain()); echo(">>> Create and register Test MBean"); Test mbean = new Test(); ObjectName name = ObjectName.getInstance(":type=Test"); server.registerMBean(mbean, name); echo(">>> Set entered flag to false in Test MBean"); mbean.entered = false; echo(">>> Query Names:"); Set<ObjectName> names = server.queryNames(null, null); for (ObjectName on : names) { echo("\t" + on.toString()); } echo(">>> Entered flag = " + mbean.entered); if (mbean.entered) { echo(">>> Test FAILED!"); throw new IllegalArgumentException("getMBeanInfo got called"); } else { echo(">>> Test PASSED!"); } }
public MBeanRegistry () { try { mBeanServer = ManagementFactory.getPlatformMBeanServer(); } catch (Error e) { // Account for running within IKVM and create a new MBeanServer // if the PlatformMBeanServer does not exist. mBeanServer = MBeanServerFactory.createMBeanServer(); } }
private static void testNonCompliant(Class<?> iface, boolean isMx) throws Exception { try { System.out.println("Creating a proxy for non-compliant " + (isMx ? "MXBean" : "MBean") + " " + iface.getName() + " ..."); MBeanServer mbs = MBeanServerFactory.newMBeanServer(); ObjectName on = new ObjectName("test:type=Proxy"); if (isMx) { JMX.newMXBeanProxy(mbs, on, iface); } else { JMX.newMBeanProxy(mbs, on, iface); } fail("Created a proxy for non-compliant " + (isMx ? "MXBean" : "MBean") + " - " + iface.getName()); } catch (Exception e) { Throwable t = e; while (t != null && !(t instanceof NotCompliantMBeanException)) { t = t.getCause(); } if (t != null) { success("Proxy not created"); } else { throw e; } } }
private static void testCompliant(Class<?> iface, boolean isMx) throws Exception { try { System.out.println("Creating a proxy for compliant " + (isMx ? "MXBean" : "MBean") + " " + iface.getName() + " ..."); MBeanServer mbs = MBeanServerFactory.newMBeanServer(); ObjectName on = new ObjectName("test:type=Proxy"); if (isMx) { JMX.newMXBeanProxy(mbs, on, iface); } else { JMX.newMBeanProxy(mbs, on, iface); } success("Created a proxy for compliant " + (isMx ? "MXBean" : "MBean") + " - " + iface.getName()); } catch (Exception e) { Throwable t = e; while (t != null && !(t instanceof NotCompliantMBeanException)) { t = t.getCause(); } if (t != null) { fail("Proxy not created"); } else { throw e; } } }
public static void main(String[] args) throws Exception { // Instantiate the MBean server // System.out.println("Create the MBean server"); MBeanServer mbs = MBeanServerFactory.createMBeanServer(); ClassLoader mbsClassLoader = mbs.getClass().getClassLoader(); String testClassName = Test.class.getName(); // Check that the MBeanServer class loader does not know our test class try { Class.forName(testClassName, true, mbsClassLoader); System.out.println("TEST IS INVALID: MBEANSERVER'S CLASS LOADER " + "KNOWS OUR TEST CLASS"); System.exit(1); } catch (ClassNotFoundException e) { // As required } // Register the MBean // System.out.println("Create MBean from this class"); ObjectName objectName = new ObjectName("whatever:type=whatever"); mbs.createMBean(testClassName, objectName); // Test OK! // System.out.println("Bye! Bye!"); }