public Set<ObjectName> getObjectNames(ObjectName objectNamePattern, QueryExp queryExp) { if (!isConnected()) { return Collections.emptySet(); } Set<ObjectName> objectNameSet = null; try { objectNameSet = _MBeanServerConnection.queryNames(objectNamePattern, queryExp); } catch (Exception e) { return null; } return new TreeSet<ObjectName>(objectNameSet); }
private Set<ObjectName> queryNames(final ObjectName name, final QueryExp query) { PrivilegedAction<Set<ObjectName>> act = new PrivilegedAction<Set<ObjectName>>() { public Set<ObjectName> run() { return mBeanServer.queryNames(name, query); } }; try { return AccessController.doPrivileged(act); } catch (RuntimeException e) { logger.fine("queryNames", "Failed to query names: " + e); logger.debug("queryNames", e); throw e; } }
public Set<ObjectInstance> queryMBeans(ObjectName name, QueryExp query) throws IOException { if (logger.debugOn()) logger.debug("queryMBeans", "name=" + name + ", query=" + query); final MarshalledObject<QueryExp> sQuery = new MarshalledObject<QueryExp>(query); final ClassLoader old = pushDefaultClassLoader(); try { return connection.queryMBeans(name, sQuery, delegationSubject); } catch (IOException ioe) { communicatorAdmin.gotIOException(ioe); return connection.queryMBeans(name, sQuery, delegationSubject); } finally { popDefaultClassLoader(old); } }
public Set<ObjectName> queryNames(ObjectName name, QueryExp query) throws IOException { if (logger.debugOn()) logger.debug("queryNames", "name=" + name + ", query=" + query); final MarshalledObject<QueryExp> sQuery = new MarshalledObject<QueryExp>(query); final ClassLoader old = pushDefaultClassLoader(); try { return connection.queryNames(name, sQuery, delegationSubject); } catch (IOException ioe) { communicatorAdmin.gotIOException(ioe); return connection.queryNames(name, sQuery, delegationSubject); } finally { popDefaultClassLoader(old); } }
/** * Gets the MemberMXBean from the JVM Platform MBeanServer for the specified member, identified by * name or ID in the GemFire cluster. * * @param memberNameId a String indicating the name or ID of the GemFire member. * @return a proxy to the GemFire member's MemberMXBean. * @throws IllegalStateException if no MemberMXBean could be found for GemFire member with ID or * name. * @throws RuntimeException wrapping the MalformedObjectNameException if the ObjectName pattern is * malformed. * @see #getMBeanServer() * @see #isMemberMXBeanFound(java.util.Collection) * @see javax.management.ObjectName * @see javax.management.QueryExp * @see javax.management.MBeanServer#queryNames(javax.management.ObjectName, * javax.management.QueryExp) * @see javax.management.JMX#newMXBeanProxy(javax.management.MBeanServerConnection, * javax.management.ObjectName, Class) * @see org.apache.geode.management.MemberMXBean */ protected MemberMXBean getMemberMXBean(final String memberNameId) { try { final MBeanServer connection = getMBeanServer(); final String objectNamePattern = ManagementConstants.OBJECTNAME__PREFIX.concat("type=Member,*"); // NOTE throws a MalformedObjectNameException, but this should not happen since we constructed // the ObjectName above final ObjectName objectName = ObjectName.getInstance(objectNamePattern); final QueryExp query = Query.or(Query.eq(Query.attr("Name"), Query.value(memberNameId)), Query.eq(Query.attr("Id"), Query.value(memberNameId))); final Set<ObjectName> objectNames = connection.queryNames(objectName, query); assertState(isMemberMXBeanFound(objectNames), "No MemberMXBean with ObjectName (%1$s) based on Query (%2$s) was found in the Platform MBeanServer for member (%3$s)!", objectName, query, memberNameId); return JMX.newMXBeanProxy(connection, objectNames.iterator().next(), MemberMXBean.class); } catch (MalformedObjectNameException e) { throw new RuntimeException(e); } }
/** * Retrieve a new proxy MBean * * @return A new proxy MBean of the same type with which the class was constructed */ public <T> T getProxyMBean(Class<T> proxyClass, String beanQueryName) throws MalformedObjectNameException, IOException { ObjectName name = null; QueryExp query = null; if (proxyClass != null) { query = Query.isInstanceOf(Query.value(proxyClass.getName())); } if (beanQueryName != null) { name = ObjectName.getInstance(beanQueryName); } Set<ObjectInstance> beans = con.queryMBeans(name, query); assertEquals("failed to find only one instance of type " + proxyClass.getName() + " with name " + beanQueryName, 1, beans.size()); return JMX.newMXBeanProxy(con, ((ObjectInstance) beans.toArray()[0]).getObjectName(), proxyClass); }
public Set<ObjectInstance> queryMBeans(ObjectName name, QueryExp query) { Set<ObjectInstance> instances = newSet(); if (name == null) name = ObjectName.WILDCARD; if (query == null) query = trueQuery; MBeanServer oldMBS = QueryEval.getMBeanServer(); try { query.setMBeanServer(this); for (ObjectName n : mbeans.keySet()) { if (name.apply(n)) { try { if (query.apply(n)) instances.add(getObjectInstance(n)); } catch (Exception e) { // OK: Ignore this MBean in the result } } } } finally { query.setMBeanServer(oldMBS); } return instances; }
public void reset(boolean includeProcessors) throws Exception { reset(); // and now reset all processors for this route if (includeProcessors) { MBeanServer server = getContext().getManagementStrategy().getManagementAgent().getMBeanServer(); if (server != null) { // get all the processor mbeans and sort them accordingly to their index String prefix = getContext().getManagementStrategy().getManagementAgent().getIncludeHostName() ? "*/" : ""; ObjectName query = ObjectName.getInstance(jmxDomain + ":context=" + prefix + getContext().getManagementName() + ",type=processors,*"); QueryExp queryExp = Query.match(new AttributeValueExp("RouteId"), new StringValueExp(getRouteId())); Set<ObjectName> names = server.queryNames(query, queryExp); for (ObjectName name : names) { server.invoke(name, "reset", null, null); } } } }
/** * Helper method to query {@link ObjectName}s from an {@link MBeanServer} * based on {@link Predicate} * * @param server * @param predicate * @return */ public static Set<ObjectName> queryNames(MBeanServer server, final Predicate<ObjectName> predicate) { @SuppressWarnings("serial") Set<ObjectName> registered = server.queryNames(null, new QueryExp() { @Override public void setMBeanServer(MBeanServer s) { } @Override public boolean apply(ObjectName name) throws BadStringOperationException, BadBinaryOpValueExpException, BadAttributeValueExpException, InvalidApplicationException { return predicate.test(name); } }); return registered; }
/** * @see javax.management.MBeanServerConnection#queryMBeans(javax.management.ObjectName, javax.management.QueryExp) */ @SuppressWarnings("unchecked") public Set<ObjectInstance> queryMBeans(final ObjectName name, final QueryExp query) throws IOException { if (this.context == null) { return this.mbs.queryMBeans(name, query); } try { return (Set<ObjectInstance>) Subject.doAsPrivileged(this.subject, new PrivilegedExceptionAction<Set<ObjectInstance>>() { public final Set<ObjectInstance> run() throws Exception { return mbs.queryMBeans(name, query); } }, this.context); } catch (final PrivilegedActionException pe) { final Exception e = JMXProviderUtils.extractException(pe); if (e instanceof IOException) throw (IOException) e; throw JMXProviderUtils.newIOException("Got unexpected server exception: " + e, e); } }
/** * @see javax.management.MBeanServerConnection#queryNames(javax.management.ObjectName, javax.management.QueryExp) */ @SuppressWarnings("unchecked") public Set<ObjectName> queryNames(final ObjectName name, final QueryExp query) throws IOException { if (this.subject == null) { return this.mbs.queryNames(name, query); } try { return (Set<ObjectName>) Subject.doAsPrivileged(this.subject, new PrivilegedExceptionAction<Set<ObjectName>>() { public final Set<ObjectName> run() throws Exception { return mbs.queryNames(name, query); } }, this.context); } catch (final PrivilegedActionException pe) { final Exception e = JMXProviderUtils.extractException(pe); if (e instanceof IOException) throw (IOException) e; throw JMXProviderUtils.newIOException("Got unexpected server exception: " + e, e); } }