You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2013/02/16 10:33:55 UTC

svn commit: r1446860 - in /camel/trunk/camel-core/src/main/java/org/apache/camel: management/DefaultManagementAgent.java management/DefaultManagementMBeanAssembler.java management/MBeanInfoAssembler.java spi/ManagementMBeanAssembler.java

Author: davsclaus
Date: Sat Feb 16 09:33:55 2013
New Revision: 1446860

URL: http://svn.apache.org/r1446860
Log:
CAMEL-6079: Skip trying to regsiter proxy class as JMX MBeans

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementMBeanAssembler.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/management/MBeanInfoAssembler.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementMBeanAssembler.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java?rev=1446860&r1=1446859&r2=1446860&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java Sat Feb 16 09:33:55 2013
@@ -229,8 +229,10 @@ public class DefaultManagementAgent exte
             ManagementMBeanAssembler assembler = camelContext.getManagementMBeanAssembler();
             ObjectHelper.notNull(assembler, "ManagementMBeanAssembler", camelContext);
             Object mbean = assembler.assemble(server, obj, name);
-            // and register the mbean
-            registerMBeanWithServer(mbean, name, forceRegistration);
+            if (mbean != null) {
+                // and register the mbean
+                registerMBeanWithServer(mbean, name, forceRegistration);
+            }
         }
     }
 

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementMBeanAssembler.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementMBeanAssembler.java?rev=1446860&r1=1446859&r2=1446860&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementMBeanAssembler.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/DefaultManagementMBeanAssembler.java Sat Feb 16 09:33:55 2013
@@ -71,6 +71,10 @@ public class DefaultManagementMBeanAssem
             mbi = assembler.getMBeanInfo(obj, null, name.toString());
         }
 
+        if (mbi == null) {
+            return null;
+        }
+
         RequiredModelMBean mbean = (RequiredModelMBean) mBeanServer.instantiate(RequiredModelMBean.class.getName());
         mbean.setModelMBeanInfo(mbi);
 
@@ -79,7 +83,7 @@ public class DefaultManagementMBeanAssem
         } catch (InvalidTargetObjectTypeException e) {
             throw new JMException(e.getMessage());
         }
-        
+
         // Allows the managed object to send notifications
         if (obj instanceof NotificationSenderAware) {
             ((NotificationSenderAware)obj).setNotificationSender(new NotificationSenderAdapter(mbean));

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/management/MBeanInfoAssembler.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/management/MBeanInfoAssembler.java?rev=1446860&r1=1446859&r2=1446860&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/management/MBeanInfoAssembler.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/management/MBeanInfoAssembler.java Sat Feb 16 09:33:55 2013
@@ -17,6 +17,7 @@
 package org.apache.camel.management;
 
 import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
 import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
 import java.util.Map;
@@ -84,10 +85,16 @@ public class MBeanInfoAssembler implemen
      * @param defaultManagedBean  the default managed bean
      * @param customManagedBean   an optional custom managed bean
      * @param objectName   the object name
-     * @return the model info
+     * @return the model info, or <tt>null</tt> if not possible to create, for example due the managed bean is a proxy class
      * @throws JMException is thrown if error creating the model info
      */
     public ModelMBeanInfo getMBeanInfo(Object defaultManagedBean, Object customManagedBean, String objectName) throws JMException {
+        // skip proxy classes
+        if (Proxy.isProxyClass(defaultManagedBean.getClass())) {
+            LOG.trace("Skip creating ModelMBeanInfo due proxy class {}", defaultManagedBean.getClass());
+            return null;
+        }
+
         // maps and lists to contain information about attributes and operations
         Map<String, ManagedAttributeInfo> attributes = new LinkedHashMap<String, ManagedAttributeInfo>();
         Set<ManagedOperationInfo> operations = new LinkedHashSet<ManagedOperationInfo>();

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementMBeanAssembler.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementMBeanAssembler.java?rev=1446860&r1=1446859&r2=1446860&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementMBeanAssembler.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/spi/ManagementMBeanAssembler.java Sat Feb 16 09:33:55 2013
@@ -33,7 +33,7 @@ public interface ManagementMBeanAssemble
      * @param mBeanServer the mbean server
      * @param obj         the object
      * @param name        the object name to use in JMX
-     * @return the assembled {@link javax.management.modelmbean.ModelMBean}
+     * @return the assembled {@link javax.management.modelmbean.ModelMBean}, or <tt>null</tt> if not possible to assemble an MBean
      * @throws JMException is thrown if error assembling the mbean
      */
     ModelMBean assemble(MBeanServer mBeanServer, Object obj, ObjectName name) throws JMException;