List of usage examples for javax.management MBeanInfo getClassName
public String getClassName()
From source file:com.haulmont.cuba.web.jmx.JmxConnectionHelper.java
protected static ObjectName getObjectName(final MBeanServerConnection connection, final String remoteContext, final Class objectClass) throws IOException { Set<ObjectName> names = connection.queryNames(null, null); return IterableUtils.find(names, o -> { if (!Objects.equals(remoteContext, o.getDomain())) { return false; }// ww w.j ava2 s .c o m MBeanInfo info; try { info = connection.getMBeanInfo(o); } catch (Exception e) { throw new JmxControlException(e); } return Objects.equals(objectClass.getName(), info.getClassName()); }); }
From source file:com.haulmont.cuba.web.jmx.JmxConnectionHelper.java
protected static Collection<ObjectName> getSuitableObjectNames(final MBeanServerConnection connection, final Class objectClass) throws IOException { Set<ObjectName> names = connection.queryNames(null, null); // find all suitable beans @SuppressWarnings("unchecked") Collection<ObjectName> suitableNames = CollectionUtils.select(names, o -> { MBeanInfo info; try {/*from w w w. j a v a 2s. co m*/ info = connection.getMBeanInfo(o); } catch (Exception e) { throw new JmxControlException(e); } return Objects.equals(objectClass.getName(), info.getClassName()); }); return suitableNames; }
From source file:Utilities.java
/** * Prints info about a bean to a {@link VarOutputSink}. * /*from ww w. j a v a 2s.c o m*/ * @param sink The {@link VarOutputSink} to which info will be sent * @param mbs The {@link MBeanServer} with respect to which the * {@code objectName} is accessed * @param objectName The {@link ObjectName} that identifies this bean */ public static void printMBeanInfo(VarOutputSink sink, MBeanServer mbs, ObjectName objectName) { MBeanInfo info = getMBeanInfoSafely(sink, mbs, objectName); if (info == null) { return; } sink.echo("\nCLASSNAME: \t" + info.getClassName()); sink.echo("\nDESCRIPTION: \t" + info.getDescription()); sink.echo("\nATTRIBUTES"); MBeanAttributeInfo[] attrInfo = info.getAttributes(); sink.printVariable("attrcount", Integer.toString(attrInfo.length)); if (attrInfo.length > 0) { for (int i = 0; i < attrInfo.length; i++) { sink.echo(" ** NAME: \t" + attrInfo[i].getName()); sink.echo(" DESCR: \t" + attrInfo[i].getDescription()); sink.echo(" TYPE: \t" + attrInfo[i].getType() + "\tREAD: " + attrInfo[i].isReadable() + "\tWRITE: " + attrInfo[i].isWritable()); } } else sink.echo(" ** No attributes **"); sink.echo("\nCONSTRUCTORS"); MBeanConstructorInfo[] constrInfo = info.getConstructors(); for (int i = 0; i < constrInfo.length; i++) { sink.echo(" ** NAME: \t" + constrInfo[i].getName()); sink.echo(" DESCR: \t" + constrInfo[i].getDescription()); sink.echo(" PARAM: \t" + constrInfo[i].getSignature().length + " parameter(s)"); } sink.echo("\nOPERATIONS"); MBeanOperationInfo[] opInfo = info.getOperations(); if (opInfo.length > 0) { for (int i = 0; i < opInfo.length; i++) { sink.echo(" ** NAME: \t" + opInfo[i].getName()); sink.echo(" DESCR: \t" + opInfo[i].getDescription()); sink.echo(" PARAM: \t" + opInfo[i].getSignature().length + " parameter(s)"); } } else sink.echo(" ** No operations ** "); sink.echo("\nNOTIFICATIONS"); MBeanNotificationInfo[] notifInfo = info.getNotifications(); if (notifInfo.length > 0) { for (int i = 0; i < notifInfo.length; i++) { sink.echo(" ** NAME: \t" + notifInfo[i].getName()); sink.echo(" DESCR: \t" + notifInfo[i].getDescription()); String notifTypes[] = notifInfo[i].getNotifTypes(); for (int j = 0; j < notifTypes.length; j++) { sink.echo(" TYPE: \t" + notifTypes[j]); } } } else sink.echo(" ** No notifications **"); }
From source file:com.haulmont.cuba.web.jmx.JmxConnectionHelper.java
@Nullable protected static ObjectName getObjectName(final MBeanServerConnection connection, final Class objectClass) throws IOException { Set<ObjectName> names = connection.queryNames(null, null); return IterableUtils.find(names, o -> { MBeanInfo info; try {//from www . java2s . c o m info = connection.getMBeanInfo(o); } catch (InstanceNotFoundException | UnmarshalException e) { return false; } catch (Exception e) { throw new JmxControlException(e); } return Objects.equals(objectClass.getName(), info.getClassName()); }); }
From source file:de.jgoldhammer.alfresco.jscript.jmx.JmxDumpUtil.java
/** * Dumps the details of a single MBean.//w ww .java2 s . c om * * @param connection * the server connection (or server itself) * @param objectName * the object name * @param out * PrintWriter to write the output to * @throws IOException * Signals that an I/O exception has occurred. * @throws JMException * Signals a JMX error */ public static Map<Object, Object> getSimpleMBeanInfo(MBeanServerConnection connection, ObjectName objectName) throws IOException, JMException { Map<Object, Object> attributes = new TreeMap<Object, Object>(); MBeanInfo info = connection.getMBeanInfo(objectName); attributes.put("** Object Name", objectName.toString()); attributes.put("** Object Type", info.getClassName()); for (MBeanAttributeInfo element : info.getAttributes()) { Object value; if (element.isReadable()) { try { value = connection.getAttribute(objectName, element.getName()); } catch (Exception e) { value = JmxDumpUtil.UNREADABLE_VALUE; } } else { value = JmxDumpUtil.UNREADABLE_VALUE; } attributes.put(element.getName(), value); } return attributes; }
From source file:de.jgoldhammer.alfresco.jscript.jmx.JmxDumpUtil.java
/** * Dumps the details of a single MBean.// w w w.ja v a2s. c o m * * @param connection * the server connection (or server itself) * @param objectName * the object name * @param out * PrintWriter to write the output to * @throws IOException * Signals that an I/O exception has occurred. * @throws JMException * Signals a JMX error */ public static void printMBeanInfo(MBeanServerConnection connection, ObjectName objectName, PrintWriter out, String attributeName) throws IOException, JMException { Map<String, Object> attributes = new TreeMap<String, Object>(); MBeanInfo info = connection.getMBeanInfo(objectName); attributes.put("** Object Name", objectName.toString()); attributes.put("** Object Type", info.getClassName()); if (StringUtils.isNotBlank(attributeName)) { Object value; try { value = connection.getAttribute(objectName, attributeName); } catch (Exception e) { value = JmxDumpUtil.UNREADABLE_VALUE; } outputValue(out, value, 10); } else { for (MBeanAttributeInfo element : info.getAttributes()) { Object value; if (element.isReadable()) { try { value = connection.getAttribute(objectName, element.getName()); } catch (Exception e) { value = JmxDumpUtil.UNREADABLE_VALUE; } } else { value = JmxDumpUtil.UNREADABLE_VALUE; } attributes.put(element.getName(), value); } tabulate(JmxDumpUtil.NAME_HEADER, JmxDumpUtil.VALUE_HEADER, attributes, out, 0); } }
From source file:com.proofpoint.jmx.MBeanRepresentation.java
public MBeanRepresentation(MBeanServer mbeanServer, ObjectName objectName, ObjectMapper objectMapper) throws JMException { this.objectName = objectName; MBeanInfo mbeanInfo = mbeanServer.getMBeanInfo(objectName); className = mbeanInfo.getClassName(); description = mbeanInfo.getDescription(); descriptor = toMap(mbeanInfo.getDescriptor()); //// ww w .j a v a 2s . c o m // Attributes // LinkedHashMap<String, MBeanAttributeInfo> attributeInfos = Maps.newLinkedHashMap(); for (MBeanAttributeInfo attributeInfo : mbeanInfo.getAttributes()) { attributeInfos.put(attributeInfo.getName(), attributeInfo); } String[] attributeNames = attributeInfos.keySet().toArray(new String[attributeInfos.size()]); ImmutableList.Builder<AttributeRepresentation> attributes = ImmutableList.builder(); for (Attribute attribute : mbeanServer.getAttributes(objectName, attributeNames).asList()) { String attributeName = attribute.getName(); // use remove so we only include one value for each attribute MBeanAttributeInfo attributeInfo = attributeInfos.remove(attributeName); if (attributeInfo == null) { // unknown extra attribute, could have been added after MBeanInfo was fetched continue; } Object attributeValue = attribute.getValue(); AttributeRepresentation attributeRepresentation = new AttributeRepresentation(attributeInfo, attributeValue, objectMapper); attributes.add(attributeRepresentation); } this.attributes = attributes.build(); // // Operations // ImmutableList.Builder<OperationRepresentation> operations = ImmutableList.builder(); for (MBeanOperationInfo operationInfo : mbeanInfo.getOperations()) { operations.add(new OperationRepresentation(operationInfo)); } this.operations = operations.build(); }
From source file:com.streamsets.datacollector.http.JMXJsonServlet.java
private void listBeans(JsonGenerator jg, ObjectName qry, String attribute, HttpServletResponse response) throws IOException { Set<ObjectName> names = null; names = mBeanServer.queryNames(qry, null); jg.writeArrayFieldStart("beans"); Iterator<ObjectName> it = names.iterator(); while (it.hasNext()) { ObjectName oname = it.next(); MBeanInfo minfo; String code = ""; Object attributeinfo = null; try {/*from w w w .java2 s.c om*/ minfo = mBeanServer.getMBeanInfo(oname); code = minfo.getClassName(); String prs = ""; try { if ("org.apache.commons.modeler.BaseModelMBean".equals(code)) { prs = "modelerType"; code = (String) mBeanServer.getAttribute(oname, prs); } if (attribute != null) { prs = attribute; attributeinfo = mBeanServer.getAttribute(oname, prs); } } catch (AttributeNotFoundException e) { // If the modelerType attribute was not found, the class name is used // instead. } catch (MBeanException e) { // The code inside the attribute getter threw an exception so // and fall back on the class name } catch (RuntimeException e) { // For some reason even with an MBeanException available to them // Runtime exceptionscan still find their way through, so treat them // the same as MBeanException } catch (ReflectionException e) { // This happens when the code inside the JMX bean (setter?? from the // java docs) threw an exception, so // class name } } catch (InstanceNotFoundException e) { //Ignored for some reason the bean was not found so don't output it continue; } catch (IntrospectionException e) { // This is an internal error, something odd happened with reflection so // continue; } catch (ReflectionException e) { // This happens when the code inside the JMX bean threw an exception, so // continue; } jg.writeStartObject(); jg.writeStringField("name", oname.toString()); jg.writeStringField("modelerType", code); if ((attribute != null) && (attributeinfo == null)) { jg.writeStringField("result", "ERROR"); jg.writeStringField("message", "No attribute with name " + attribute + " was found."); jg.writeEndObject(); jg.writeEndArray(); jg.close(); response.setStatus(HttpServletResponse.SC_NOT_FOUND); return; } if (attribute != null) { writeAttribute(jg, attribute, attributeinfo); } else { MBeanAttributeInfo attrs[] = minfo.getAttributes(); for (int i = 0; i < attrs.length; i++) { writeAttribute(jg, oname, attrs[i]); } } jg.writeEndObject(); } jg.writeEndArray(); }
From source file:net.sbbi.upnp.jmx.UPNPMBeanService.java
protected UPNPMBeanService(String deviceUUID, String vendorDomain, String serviceId, String serviceType, int serviceVersion, MBeanInfo mbeanInfo, ObjectName mbeanName, MBeanServer targetServer) throws IOException { this.deviceUUID = deviceUUID; if (serviceId == null) { serviceId = generateServiceId(mbeanName); }//from ww w. j a v a2s. c o m this.serviceUUID = deviceUUID + "/" + serviceId; this.serviceType = "urn:" + vendorDomain + ":service:" + serviceType + ":" + serviceVersion; this.serviceId = "urn:" + vendorDomain + ":serviceId:" + serviceId; deviceSCDP = getDeviceSSDP(mbeanInfo); try { targetBeanClass = Class.forName(mbeanInfo.getClassName()); } catch (ClassNotFoundException ex) { IOException ex2 = new IOException("Unable to find target MBean class " + mbeanInfo.getClassName()); ex2.initCause(ex); throw ex2; } this.mbeanName = mbeanName; this.mbeanInfo = mbeanInfo; this.targetServer = targetServer; }
From source file:net.community.chest.gitcloud.facade.frontend.git.GitController.java
private void serveRequest(RequestMethod method, HttpServletRequest req, HttpServletResponse rsp) throws IOException, ServletException { if (logger.isDebugEnabled()) { logger.debug("serveRequest(" + method + ")[" + req.getRequestURI() + "][" + req.getQueryString() + "]"); }/*from w ww.j a v a 2 s . c om*/ if ((loopRetryTimeout > 0L) && (!loopDetected)) { long now = System.currentTimeMillis(), diff = now - initTimestamp; if ((diff > 0L) && (diff < loopRetryTimeout)) { try { MBeanInfo mbeanInfo = mbeanServer.getMBeanInfo(new ObjectName( "net.community.chest.gitcloud.facade.backend.git:name=BackendRepositoryResolver")); if (mbeanInfo != null) { logger.info("serveRequest(" + method + ")[" + req.getRequestURI() + "][" + req.getQueryString() + "]" + " detected loop: " + mbeanInfo.getClassName() + "[" + mbeanInfo.getDescription() + "]"); loopDetected = true; } } catch (JMException e) { if (logger.isDebugEnabled()) { logger.debug("serveRequest(" + method + ")[" + req.getRequestURI() + "][" + req.getQueryString() + "]" + " failed " + e.getClass().getSimpleName() + " to detect loop: " + e.getMessage()); } } } } ResolvedRepositoryData repoData = resolveTargetRepository(method, req); if (repoData == null) { throw ExtendedLogUtils.thrownLogging(logger, Level.WARNING, "serveRequest(" + method + ")[" + req.getRequestURI() + "][" + req.getQueryString() + "]", new NoSuchElementException("Failed to resolve repository")); } String username = authenticate(req); // TODO check if the user is allowed to access the repository via the resolve operation (push/pull) if at all (e.g., private repo) logger.info("serveRequest(" + method + ")[" + req.getRequestURI() + "][" + req.getQueryString() + "] user=" + username); /* * NOTE: this feature requires enabling cross-context forwarding. * In Tomcat, the 'crossContext' attribute in 'Context' element of * 'TOMCAT_HOME\conf\context.xml' must be set to true, to enable cross-context */ if (loopDetected) { // TODO see if can find a more efficient way than splitting and re-constructing URI uri = repoData.getRepoLocation(); ServletContext curContext = req.getServletContext(); String urlPath = uri.getPath(), urlQuery = uri.getQuery(); String[] comps = StringUtils.split(urlPath, '/'); String appName = comps[0]; ServletContext loopContext = Validate.notNull(curContext.getContext("/" + appName), "No cross-context for %s", appName); // build the relative path in the re-directed context StringBuilder sb = new StringBuilder( urlPath.length() + 1 + (StringUtils.isEmpty(urlQuery) ? 0 : urlQuery.length())); for (int index = 1; index < comps.length; index++) { sb.append('/').append(comps[index]); } if (!StringUtils.isEmpty(urlQuery)) { sb.append('?').append(urlQuery); } String redirectPath = sb.toString(); RequestDispatcher dispatcher = Validate.notNull(loopContext.getRequestDispatcher(redirectPath), "No dispatcher for %s", redirectPath); dispatcher.forward(req, rsp); if (logger.isDebugEnabled()) { logger.debug("serveRequest(" + method + ")[" + req.getRequestURI() + "][" + req.getQueryString() + "]" + " forwarded to " + loopContext.getContextPath() + "/" + redirectPath); } } else { executeRemoteRequest(method, repoData.getRepoLocation(), req, rsp); } }