You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2010/08/27 22:25:11 UTC
svn commit: r990252 -
/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java
Author: robbie
Date: Fri Aug 27 20:25:11 2010
New Revision: 990252
URL: http://svn.apache.org/viewvc?rev=990252&view=rev
Log:
QPID-2615: Remove use of the Java6 ObjectName '?' wildcard used to avoid security restrictions on the UserManagement MBean when identifying the management api version of older brokers
Modified:
qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java
Modified: qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java?rev=990252&r1=990251&r2=990252&view=diff
==============================================================================
--- qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java (original)
+++ qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java Fri Aug 27 20:25:11 2010
@@ -47,6 +47,7 @@ import javax.management.ReflectionExcept
import org.apache.qpid.management.common.mbeans.ServerInformation;
import org.apache.qpid.management.ui.ApiVersion;
import org.apache.qpid.management.ui.ApplicationRegistry;
+import org.apache.qpid.management.ui.Constants;
import org.apache.qpid.management.ui.ManagedBean;
import org.apache.qpid.management.ui.ManagedServer;
import org.apache.qpid.management.ui.exceptions.ManagementConsoleException;
@@ -502,10 +503,20 @@ public class MBeanUtility
* Retrieves all the MBeans from mbean server for a given domain
* @return list of ManagedBeans
*/
- public static List<ManagedBean> getManagedObjectsForDomain(ManagedServer server, String domain) throws Exception
+ public static List<ManagedBean> getManagedObjectsForDomain(ManagedServer server, String domain) throws MalformedObjectNameException, NullPointerException, IOException
{
- List<ManagedBean> mbeans = new ArrayList<ManagedBean>();
JMXServerRegistry serverRegistry = (JMXServerRegistry)ApplicationRegistry.getServerRegistry(server);
+ return getManagedObjectsForDomain(server,serverRegistry, domain);
+ }
+
+ /**
+ * Retrieves all the MBeans from mbean server for a given domain
+ * @return list of ManagedBeans
+ */
+ public static List<ManagedBean> getManagedObjectsForDomain(ManagedServer server, JMXServerRegistry serverRegistry, String domain) throws MalformedObjectNameException, NullPointerException, IOException
+ {
+ List<ManagedBean> mbeans = new ArrayList<ManagedBean>();
+
MBeanServerConnection mbsc = serverRegistry.getServerConnection();
ObjectName objName = new ObjectName(domain + ":*");
Set objectInstances = mbsc.queryMBeans(objName, null);
@@ -559,32 +570,35 @@ public class MBeanUtility
//Detect the value of the 'version' key property on the UserManagement MBean ObjectName.
//If present, we have a v1.2 API server. If null, we have a v1.1 API server.
- //Use an ObjectName pattern (the ?) to match the 'type' and allow this to work for non-admin users
- objName = new ObjectName(server.getDomain() + ":type="+ "UserManagemen?" + ",*");
- objectInstances = mbsc.queryNames(objName, null);
-
- if(objectInstances.size() != 0)
+ ObjectName umMBeanObjectName = null;
+ List<ManagedBean> mbeans = getManagedObjectsForDomain(server, serverRegistry, Constants.DEFAULT_DOMAIN);
+ for(ManagedBean mbean: mbeans)
{
- for (Iterator<ObjectName> itr = objectInstances.iterator(); itr.hasNext();)
+ if("UserManagement".equalsIgnoreCase(mbean.getType()))
{
- ObjectName instance = (ObjectName)itr.next();
- String version = instance.getKeyProperty("version");
-
- if(version != null)
- {
- serverRegistry.setManagementApiVersion(new ApiVersion(1, 2));
- }
- else
- {
- serverRegistry.setManagementApiVersion(new ApiVersion(1, 1));
- }
+ umMBeanObjectName = ((JMXManagedObject) mbean).getObjectName();
+ break;
}
}
- else
+
+ if(umMBeanObjectName != null)
{
- //UserManagement MBean wasnt present, connected to an old server: classify as v1.0 API
- serverRegistry.setManagementApiVersion(new ApiVersion(1, 0));
+ //UserManagement MBean was present, determine if it has a version key
+ if(umMBeanObjectName.getKeyProperty("version") != null)
+ {
+ serverRegistry.setManagementApiVersion(new ApiVersion(1, 2));
+ }
+ else
+ {
+ //no version key,
+ serverRegistry.setManagementApiVersion(new ApiVersion(1, 1));
+ }
+
+ return;
}
+
+ //UserManagement MBean was not present, connected to an old server: classify as v1.0 API
+ serverRegistry.setManagementApiVersion(new ApiVersion(1, 0));
}
public static void printOutput(String statement)
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org