package org.yajul.jmx; import org.yajul.comparators.ComparatorChain; import javax.management.MBeanServer; import javax.management.MBeanServerFactory; import javax.management.ObjectName; import java.util.*; /** * JMX helper methods * <br> * User: josh * Date: Dec 23, 2009 * Time: 10:40:28 AM */ public class JmxUtil { public static MBeanServer locateServerWithDomain(String agentId,String serverDomain) { final ArrayList<MBeanServer> list = MBeanServerFactory.findMBeanServer(agentId); for (MBeanServer mBeanServer : list) { if (serverDomain.equals(mBeanServer.getDefaultDomain())) { return mBeanServer; } } throw new IllegalArgumentException("No MBeanServer for agentId '" + agentId + "' serverDomain '" + serverDomain + "' found!"); } public static final Comparator<ObjectName> DOMAIN_COMPARATOR = new Comparator<ObjectName>() { public int compare(ObjectName o1, ObjectName o2) { String d1 = o1.getDomain(); String d2 = o2.getDomain(); return d1.compareTo(d2); } }; public static final Comparator<ObjectName> KEY_PROPERTY_COMPARATOR = new Comparator<ObjectName>() { public int compare(ObjectName o1, ObjectName o2) { String k1 = o1.getCanonicalKeyPropertyListString(); String k2 = o2.getCanonicalKeyPropertyListString(); return k1.compareTo(k2); } }; public static final Comparator<ObjectName> DOMAIN_KEY_COMPARATOR = new ComparatorChain<ObjectName>(DOMAIN_COMPARATOR, KEY_PROPERTY_COMPARATOR); public static List<ObjectName> sortByDomain(Collection<ObjectName> objectNames) { List<ObjectName> list = new ArrayList<ObjectName>(objectNames); Collections.sort(list,DOMAIN_KEY_COMPARATOR); return list; } }