List of usage examples for javax.management.remote JMXConnector getMBeanServerConnection
public MBeanServerConnection getMBeanServerConnection() throws IOException;
Returns an MBeanServerConnection
object representing a remote MBean server.
From source file:org.rhq.cassandra.ClusterInitService.java
private String getSchemaVersionForNode(String storageNode, int jmxPort) throws Exception { String url = this.getJMXConnectionURL(storageNode, jmxPort); JMXServiceURL serviceURL = new JMXServiceURL(url); Map<String, String> env = new HashMap<String, String>(); JMXConnector connector = null; try {/*w ww. ja va2s .co m*/ connector = JMXConnectorFactory.connect(serviceURL, env); MBeanServerConnection serverConnection = connector.getMBeanServerConnection(); ObjectName storageService = new ObjectName("org.apache.cassandra.db:type=StorageService"); String attribute = "SchemaVersion"; try { return (String) serverConnection.getAttribute(storageService, attribute); } catch (Exception e) { // It is ok to just catch and log exceptions here particularly in an integration // test environment where we could potentially try to do the JMX query before // Cassandra is fully initialized. We can query StorageService before the native // transport server is initialized which will result in Cassandra throwing a NPE. // We do not want propagate that exception because it is just a matter of waiting // for Cassandra to finish initializing. if (log.isDebugEnabled()) { log.debug("Failed to read attribute [" + attribute + "] from " + storageService, e); } else { log.info("Faied to read attribute [" + attribute + "] from " + storageService + ": " + e.getMessage()); } } } finally { if (connector != null) { connector.close(); } } return null; }
From source file:org.rhq.cassandra.ClusterInitService.java
public boolean isNativeTransportRunning(String storageNode, int jmxPort) throws Exception { Boolean nativeTransportRunning = false; String url = getJMXConnectionURL(storageNode, jmxPort); JMXServiceURL serviceURL = new JMXServiceURL(url); Map<String, String> env = new HashMap<String, String>(); JMXConnector connector = null; try {// w ww. j a va2 s.c o m connector = JMXConnectorFactory.connect(serviceURL, env); MBeanServerConnection serverConnection = connector.getMBeanServerConnection(); ObjectName storageService = new ObjectName("org.apache.cassandra.db:type=StorageService"); String attribute = "NativeTransportRunning"; try { nativeTransportRunning = (Boolean) serverConnection.getAttribute(storageService, attribute); } catch (Exception e) { // It is ok to just catch and log exceptions here particularly in an integration // test environment where we could potentially try to do the JMX query before // Cassandra is fully initialized. We can query StorageService before the native // transport server is initialized which will result in Cassandra throwing a NPE. // We do not want propagate that exception because it is just a matter of waiting // for Cassandra to finish initializing. if (log.isDebugEnabled()) { log.debug("Failed to read attribute [" + attribute + "] from " + storageService, e); } else { log.info("Faied to read attribute [" + attribute + "] from " + storageService + ": " + e.getMessage()); } } } finally { if (connector != null) { connector.close(); } } return nativeTransportRunning; }
From source file:com.stumbleupon.hbaseadmin.JMXQuery.java
public String execute(String hostport) throws Exception { Iterator i;// w ww . j ava2 s . com String result = ""; final JMXServiceURL rmiurl = new JMXServiceURL( "service:jmx:rmi://" + hostport + "/jndi/rmi://" + hostport + "/jmxrmi"); final JMXConnector jmxc = JMXConnectorFactory.connect(rmiurl, getCredentials(password_file)); try { final MBeanServerConnection mbsc = jmxc.getMBeanServerConnection(); final ObjectName objName = new ObjectName(beanName); final Set beans = mbsc.queryMBeans(objName, null); if (beans.size() == 0) { logger.warn(objName.getCanonicalName() + " is not a registered bean"); } else if (beans.size() == 1) { final ObjectInstance instance = (ObjectInstance) beans.iterator().next(); result = doBean(mbsc, instance, command); } else { for (i = beans.iterator(); i.hasNext();) { final Object obj = i.next(); if (obj instanceof ObjectName) System.out.println(((ObjectName) obj).getCanonicalName()); else if (obj instanceof ObjectInstance) { System.out.println(((ObjectInstance) obj).getObjectName().getCanonicalName()); } else logger.error("Unexpected object type: " + obj); } } } finally { jmxc.close(); } return result; }
From source file:org.apache.hadoop.hbase.TestStochasticBalancerJmxMetrics.java
/** * Read the attributes from Hadoop->HBase->Master->Balancer in JMX * @throws IOException //ww w .j a v a 2 s .c om */ private Set<String> readJmxMetrics() throws IOException { JMXConnector connector = null; ObjectName target = null; MBeanServerConnection mb = null; try { connector = JMXConnectorFactory.connect(JMXListener.buildJMXServiceURL(connectorPort, connectorPort)); mb = connector.getMBeanServerConnection(); Hashtable<String, String> pairs = new Hashtable<>(); pairs.put("service", "HBase"); pairs.put("name", "Master"); pairs.put("sub", "Balancer"); target = new ObjectName("Hadoop", pairs); MBeanInfo beanInfo = mb.getMBeanInfo(target); Set<String> existingAttrs = new HashSet<String>(); for (MBeanAttributeInfo attrInfo : beanInfo.getAttributes()) { existingAttrs.add(attrInfo.getName()); } return existingAttrs; } catch (Exception e) { LOG.warn("Failed to get bean!!! " + target, e); if (mb != null) { Set<ObjectInstance> instances = mb.queryMBeans(null, null); Iterator<ObjectInstance> iterator = instances.iterator(); System.out.println("MBean Found:"); while (iterator.hasNext()) { ObjectInstance instance = iterator.next(); System.out.println("Class Name: " + instance.getClassName()); System.out.println("Object Name: " + instance.getObjectName()); } } } finally { if (connector != null) { try { connector.close(); } catch (Exception e) { e.printStackTrace(); } } } return null; }
From source file:org.lilyproject.lilyservertestfw.LilyProxy.java
public void start(SolrDefinition solrDef) throws Exception { if (started) { throw new IllegalStateException("LilyProxy is already started."); } else {/*w w w . j a v a 2s. c o m*/ started = true; } cleanOldTmpDirs(); if (hasBeenStarted && this.mode == Mode.EMBED) { // In embed mode, we can't support multiple start-stop sequences since // HBase/Hadoop does not shut down all processes synchronously. throw new IllegalStateException("LilyProxy can only be started once in a JVM when using embed mode."); } else { hasBeenStarted = true; } System.out.println("LilyProxy mode: " + mode); if (mode == Mode.CONNECT) { // First reset the state System.out.println("Calling reset state flag on externally launched Lily..."); try { String hostport = "localhost:10102"; JMXServiceURL url = new JMXServiceURL( "service:jmx:rmi://" + hostport + "/jndi/rmi://" + hostport + "/jmxrmi"); JMXConnector connector = JMXConnectorFactory.connect(url); connector.connect(); ObjectName lilyLauncher = new ObjectName("LilyLauncher:name=Launcher"); connector.getMBeanServerConnection().invoke(lilyLauncher, "resetLilyState", new Object[0], new String[0]); connector.close(); } catch (Exception e) { throw new Exception("Resetting Lily state failed.", e); } System.out.println("State reset done."); } if (mode == Mode.EMBED || mode == Mode.HADOOP_CONNECT) { if (testHome == null) { testHome = TestHomeUtil.createTestHome(TEMP_DIR_PREFIX); } if (mode == Mode.EMBED) { hbaseProxy.setTestHome(new File(testHome, TemplateDir.HADOOP_DIR)); } solrProxy.setTestHome(new File(testHome, TemplateDir.SOLR_DIR)); lilyServerProxy.setTestHome(new File(testHome, TemplateDir.LILYSERVER_DIR)); } if (mode == Mode.EMBED && Boolean.parseBoolean(System.getProperty(RESTORE_TEMPLATE_DIR_PROP_NAME, "true"))) { TemplateDir.restoreTemplateDir(testHome); } hbaseProxy.start(); solrProxy.start(solrDef); lilyServerProxy.start(); hbaseIndexerLauncherService.start(Collections.<String>emptyList()); }
From source file:com.continuent.tungsten.common.jmx.JmxManager.java
/** * Client helper method to obtain a proxy that implements the given * interface by forwarding its methods through the given MBean server to the * named MBean.// ww w . j ava 2s .co m * * @param clientConnection the MBean server to forward to * @param mbeanClass The class for which an MBean exists * @param notificationBroadcaster If true make the returned proxy implement * NotificationEmitter by forwarding its methods via connection * @return An MBean proxy */ public static Object getMBeanProxy(JMXConnector clientConnection, Class<?> mbeanClass, boolean notificationBroadcaster) { String mbeanInterfaceClassName = mbeanClass.getName() + "MBean"; Class<?> mbeanInterfaceClass = null; try { mbeanInterfaceClass = Class.forName(mbeanInterfaceClassName); } catch (ClassNotFoundException c) { throw new ServerRuntimeException(String.format( "Cannot get an RMI proxy for class %s because the interface class %s was not found", mbeanClass.getName(), mbeanInterfaceClassName)); } try { ObjectName objectName = generateMBeanObjectName(mbeanClass); return MBeanServerInvocationHandler.newProxyInstance(clientConnection.getMBeanServerConnection(), objectName, mbeanInterfaceClass, notificationBroadcaster); } catch (Exception e) { throw new ServerRuntimeException( String.format("Cannot get an RMI proxy for class %s because of this exception: %s", mbeanClass.getName(), e), e); } }
From source file:com.tribloom.module.JmxClient.java
@Override protected Map<String, Object> executeImpl(WebScriptRequest req, Status status, Cache cache) { Map<String, Object> model = new HashMap<String, Object>(); model.put("connectionSuccess", true); model.put("time", System.currentTimeMillis()); try {/* w w w.ja v a 2s . c om*/ // Create an RMI connector client and // connect it to the RMI connector server // echo("\nCreate an RMI connector client and " + "connect it to the RMI connector server"); JMXServiceURL url = new JMXServiceURL( "service:jmx:rmi://ignored/jndi/rmi://localhost:50500/alfresco/jmxrmi"); Map<String, Object> env = new HashMap<String, Object>(); String[] creds = { "controlRole", "change_asap" }; env.put(JMXConnector.CREDENTIALS, creds); JMXConnector jmxc = JMXConnectorFactory.connect(url, env); // Get an MBeanServerConnection // echo("\nGet an MBeanServerConnection"); MBeanServerConnection mbsc = jmxc.getMBeanServerConnection(); ObjectName memory = new ObjectName("java.lang:type=Memory"); CompositeData heapMemUsage = (CompositeData) mbsc.getAttribute(memory, "HeapMemoryUsage"); addCompositeData(model, heapMemUsage, "heapMemoryUsage"); CompositeData nonHeapMemUsage = (CompositeData) mbsc.getAttribute(memory, "NonHeapMemoryUsage"); addCompositeData(model, nonHeapMemUsage, "nonHeapMemoryUsage"); ObjectName operatingSystem = new ObjectName("java.lang:type=OperatingSystem"); model.put("openFileDescriptorCount", mbsc.getAttribute(operatingSystem, "OpenFileDescriptorCount")); model.put("maxFileDescriptorCount", mbsc.getAttribute(operatingSystem, "MaxFileDescriptorCount")); model.put("committedVirtualMemorySize", mbsc.getAttribute(operatingSystem, "CommittedVirtualMemorySize")); model.put("totalSwapSpaceSize", mbsc.getAttribute(operatingSystem, "TotalSwapSpaceSize")); model.put("freeSwapSpaceSize", mbsc.getAttribute(operatingSystem, "FreeSwapSpaceSize")); model.put("processCpuTime", mbsc.getAttribute(operatingSystem, "ProcessCpuTime")); model.put("freePhysicalMemorySize", mbsc.getAttribute(operatingSystem, "FreePhysicalMemorySize")); model.put("totalPhysicalMemorySize", mbsc.getAttribute(operatingSystem, "TotalPhysicalMemorySize")); model.put("operatingSystemName", mbsc.getAttribute(operatingSystem, "Name")); model.put("operatingSystemVersion", mbsc.getAttribute(operatingSystem, "Version")); model.put("operatingSystemArch", mbsc.getAttribute(operatingSystem, "Arch")); model.put("availableProcessors", mbsc.getAttribute(operatingSystem, "AvailableProcessors")); model.put("systemLoadAverage", mbsc.getAttribute(operatingSystem, "SystemLoadAverage")); try { ObjectName parNewGarbageCollector = new ObjectName("java.lang:type=GarbageCollector,name=ParNew"); echo("\nparNewGarbageCollector = " + parNewGarbageCollector); CompositeData parNewLastGcInfo = (CompositeData) mbsc.getAttribute(parNewGarbageCollector, "LastGcInfo"); addCompositeData(model, parNewLastGcInfo, "parNewLastGcInfo"); } catch (InstanceNotFoundException ex) { // No Garbage Collection has occurred yet echo("No Garbage Collection found: " + ex.getMessage()); } try { ObjectName concurrentGarbageCollector = new ObjectName( "java.lang:type=GarbageCollector,name=ConcurrentMarkSweep"); echo("\nconcurrentGarbageCollector = " + concurrentGarbageCollector); CompositeData concurrentGarbageCollectorLastGcInfo = (CompositeData) mbsc .getAttribute(concurrentGarbageCollector, "LastGcInfo"); addCompositeData(model, concurrentGarbageCollectorLastGcInfo, "concurrentMarkSweepLastGcInfo"); } catch (InstanceNotFoundException ex) { // No Garbage Collection has occurred yet echo("No Garbage Collection found: " + ex.getMessage()); } ObjectName classLoading = new ObjectName("java.lang:type=ClassLoading"); model.put("classLoadingLoadedClassCount", mbsc.getAttribute(classLoading, "LoadedClassCount")); model.put("classLoadingUnloadedClassCount", mbsc.getAttribute(classLoading, "UnloadedClassCount")); model.put("classLoadingTotalLoadedClassCount", mbsc.getAttribute(classLoading, "TotalLoadedClassCount")); ObjectName runtime = new ObjectName("java.lang:type=Runtime"); model.put("runtimeName", mbsc.getAttribute(runtime, "Name")); model.put("runtimeClassPath", mbsc.getAttribute(runtime, "ClassPath")); // TODO: Tabular type... Object sysProps = mbsc.getAttribute(runtime, "SystemProperties"); echo("\nsysProps = " + sysProps); model.put("runtimeStartTime", mbsc.getAttribute(runtime, "StartTime")); model.put("runtimeVmName", mbsc.getAttribute(runtime, "VmName")); model.put("runtimeVmVendor", mbsc.getAttribute(runtime, "VmVendor")); model.put("runtimeVmVersion", mbsc.getAttribute(runtime, "VmVersion")); model.put("runtimeLibraryPath", mbsc.getAttribute(runtime, "LibraryPath")); model.put("runtimeBootClassPath", mbsc.getAttribute(runtime, "BootClassPath")); model.put("runtimeManagementSpecVersion", mbsc.getAttribute(runtime, "ManagementSpecVersion")); model.put("runtimeSpecName", mbsc.getAttribute(runtime, "SpecName")); model.put("runtimeSpecVendor", mbsc.getAttribute(runtime, "SpecVendor")); model.put("runtimeSpecVersion", mbsc.getAttribute(runtime, "SpecVersion")); model.put("runtimeInputArguments", mbsc.getAttribute(runtime, "InputArguments")); // TODO: Array... model.put("runtimeUptime", mbsc.getAttribute(runtime, "Uptime")); try { ObjectName memoryPool = new ObjectName("java.lang:type=MemoryPool"); model.put("memoryPoolName", mbsc.getAttribute(memoryPool, "Name")); model.put("memoryPoolType", mbsc.getAttribute(memoryPool, "Type")); CompositeData memoryPoolUsage = (CompositeData) mbsc.getAttribute(memoryPool, "Usage"); addCompositeData(model, memoryPoolUsage, "memoryPoolUsage"); CompositeData memoryPoolPeakUsage = (CompositeData) mbsc.getAttribute(memoryPool, "PeakUsage"); addCompositeData(model, memoryPoolPeakUsage, "memoryPoolPeakUsage"); model.put("memoryPoolMemoryManagerNames", mbsc.getAttribute(memoryPool, "MemoryManagerNames")); // Array of strings model.put("memoryPoolUsageThreshold", mbsc.getAttribute(memoryPool, "UsageThreshold")); model.put("memoryPoolUsageThresholdExceeded", mbsc.getAttribute(memoryPool, "UsageThresholdExceeded")); model.put("memoryPoolUsageThresholdCount", mbsc.getAttribute(memoryPool, "UsageThresholdCount")); model.put("memoryPoolUsageThresholdSupported", mbsc.getAttribute(memoryPool, "UsageThresholdSupported")); model.put("memoryPoolCollectionUsageThreshold", mbsc.getAttribute(memoryPool, "CollectionUsageThreshold")); model.put("memoryPoolCollectionUsageThresholdExceeded", mbsc.getAttribute(memoryPool, "CollectionUsageThresholdExceeded")); model.put("memoryPoolCollectionUsageThresholdCount", mbsc.getAttribute(memoryPool, "CollectionUsageThresholdCount")); CompositeData collectionUsage = (CompositeData) mbsc.getAttribute(memoryPool, "CollectionUsage"); addCompositeData(model, collectionUsage, "memoryPoolCollectionUsage"); model.put("memoryPoolCollectionUsageThresholdSupported", mbsc.getAttribute(memoryPool, "CollectionUsageThresholdSupported")); } catch (InstanceNotFoundException ex) { // Memory pool not initialized yet } echo("\nClose the connection to the server"); jmxc.close(); echo("\nBye! Bye!"); } catch (Exception ex) { ex.printStackTrace(); model.put("connectionSuccess", false); model.put("exception", ex.getMessage()); } return model; }
From source file:org.wso2.carbon.analytics.common.jmx.agent.JmxAgentWebInterface.java
/** * @param mBean : The name of the MBean * @param url : The URL for the JMX server * @param userName : The User name for the JMX server * @param password : The password for the JMX server * @return : The set of attributes in a MBean * @throws MalformedObjectNameException// w w w.j av a2 s. c o m * @throws IntrospectionException * @throws InstanceNotFoundException * @throws IOException * @throws ReflectionException */ public String[][] getMBeanAttributeInfo(String mBean, String url, String userName, String password) throws MalformedObjectNameException, IntrospectionException, InstanceNotFoundException, IOException, ReflectionException { JMXConnector jmxc = getJmxConnector(url, userName, password); MBeanServerConnection mbsc = jmxc.getMBeanServerConnection(); ObjectName mBeanName = new ObjectName(mBean); MBeanAttributeInfo[] attrs = mbsc.getMBeanInfo(mBeanName).getAttributes(); ArrayList<String[]> strAttrs = new ArrayList<String[]>(); for (MBeanAttributeInfo info : attrs) { //check the suitability of the attribute try { Object result = mbsc.getAttribute(mBeanName, info.getName()); //if this is an instance of a primary data type supported by cassandra if (result instanceof String || result instanceof Integer || result instanceof Double || result instanceof Long || result instanceof Boolean || result instanceof Float) { strAttrs.add(new String[] { info.getName() }); } //if this is a composite data type if (result instanceof CompositeData) { CompositeData cd = (CompositeData) result; ArrayList<String> keys = new ArrayList<String>(); //add the attribute name keys.add(info.getName()); for (String key : cd.getCompositeType().keySet()) { //check whether the key returns a primary data type Object attrValue = cd.get(key); if (attrValue instanceof String || attrValue instanceof Integer || attrValue instanceof Double || attrValue instanceof Long || attrValue instanceof Boolean || attrValue instanceof Float) { keys.add(key); } } //if this composite data object has keys which returns attributes with // primary data types if (keys.size() > 1) { strAttrs.add(keys.toArray(new String[keys.size()])); } } } catch (MBeanException e) { log.error("Removed the attribute " + info.getName() + " of " + mBean + " from the UI list due to: " + e.getMessage()); } catch (AttributeNotFoundException e) { log.error("Removed the attribute " + info.getName() + " of " + mBean + " from the UI list due to: " + e.getMessage()); } catch (UnmarshalException e) { log.error("Removed the attribute " + info.getName() + " of " + mBean + " from the UI list due to: " + e.getMessage()); } catch (RuntimeOperationsException e) { log.error("Removed the attribute " + info.getName() + " of " + mBean + " from the UI list due to: " + e.getMessage()); } catch (RuntimeMBeanException e) { log.error("Removed the attribute " + info.getName() + " of " + mBean + " from the UI list due to: " + e.getMessage()); } catch (ReflectionException e) { log.error("Removed the attribute " + info.getName() + " of " + mBean + " from the UI list due to: " + e.getMessage()); } catch (Exception e) { log.error("Removed the attribute " + info.getName() + " of " + mBean + " from the UI list due to: " + e.getMessage()); } } //close the connection jmxc.close(); return strAttrs.toArray(new String[strAttrs.size()][]); }
From source file:org.wso2.carbon.analytics.common.jmx.agent.JmxAgentWebInterface.java
/** * @param url : The URL for the JMX server * @param userName : The User name for the JMX server * @param password : The password for the JMX server * @return : The name array of the MBeans which the JMX server. The format of the array is * [Domain name][MBean Canonical name] * @throws IOException//from ww w . j a v a 2 s.com */ public String[][] getMBeans(String url, String userName, String password) throws IOException { JMXConnector jmxc = null; try { jmxc = getJmxConnector(url, userName, password); MBeanServerConnection mbsc = jmxc.getMBeanServerConnection(); int count = 0; Set<ObjectName> names = new TreeSet<ObjectName>(mbsc.queryNames(null, null)); String[][] nameArr = new String[names.size()][2]; for (ObjectName name : names) { nameArr[count][0] = name.getDomain(); nameArr[count][1] = name.getCanonicalName(); count++; } return nameArr; } catch (MalformedURLException e) { log.error(e); throw e; } catch (IOException e) { log.error(e); throw e; } finally { if (jmxc != null) { jmxc.close(); } } }
From source file:io.fabric8.spi.process.AbstractProcessHandler.java
@Override public final Future<ManagedProcess> start() { State state = managedProcess.getState(); assertNotDestroyed(state);/*from www .ja v a2s. c om*/ // Setup a call back notification to get the JMX connection of the started process final CountDownLatch latch = new CountDownLatch(1); String jmxAgentServiceURL = managedProcess .getAttribute(ContainerAttributes.ATTRIBUTE_KEY_AGENT_JMX_SERVER_URL); String jmxAgentUsername = managedProcess.getAttribute(ContainerAttributes.ATTRIBUTE_KEY_AGENT_JMX_USERNAME); String jmxAgentPassword = managedProcess.getAttribute(ContainerAttributes.ATTRIBUTE_KEY_AGENT_JMX_PASSWORD); JMXConnector connector = ManagementUtils.getJMXConnector(jmxAgentServiceURL, jmxAgentUsername, jmxAgentPassword, 200, TimeUnit.MILLISECONDS); try { final MBeanServerConnection server = connector.getMBeanServerConnection(); server.addNotificationListener(Agent.OBJECT_NAME, new NotificationListener() { @Override public void handleNotification(Notification notification, Object handback) { String eventType = notification.getType(); if (NOTIFICATION_TYPE_AGENT_REGISTRATION.equals(eventType)) { AgentRegistration agentReg = (AgentRegistration) notification.getSource(); String agentName = agentReg.getIdentity().getName(); String procName = (String) handback; if (agentName.equals(procName)) { try { server.removeNotificationListener(Agent.OBJECT_NAME, this); } catch (Exception ex) { // ignore } latch.countDown(); } } } }, null, managedProcess.getIdentity().getName()); } catch (RuntimeException rte) { throw rte; } catch (Exception ex) { throw new IllegalStateException(ex); } finally { IOUtils.safeClose(connector); } try { if (state == State.CREATED || state == State.STOPPED) { doStart(managedProcess); IllegalStateAssertion.assertNotNull(process, "No process created"); managedProcess.setState(State.STARTED); } } catch (Exception ex) { throw new LifecycleException("Cannot start container", ex); } return new ProcessFuture(managedProcess); //, latch); }