JBI Cannot Register MBeans through NMR ManagementAgent
------------------------------------------------------

                 Key: SM-2012
                 URL: https://issues.apache.org/activemq/browse/SM-2012
             Project: ServiceMix
          Issue Type: Bug
          Components: servicemix-jbi
         Environment: Fuse 4.3
            Reporter: Kurt Westerfeld


We are trying to use the Apache ODE MBeans which are registered through the JBI 
SMX infrastructure.   The border between ODE and SMX/JBI occurs through 
org.apache.servicemix.jbi.runtime.impl.MBeanServerWrapper.

This class passes along a bean and objectname, which is supposed to register 
the mbean.  Instead, it silently fails to do so.  Our application needs to 
access the PMAPI ODE APIs, which are published through JMX (as well as a JBI 
endpoint, but that's another story involving java.lang.LinkageError: loader 
constraint violation internal to ODE--which seems the harder of the two 
problems to solve).

In stepping through the sources in the debugger, the culprit seems to be the 
getTypeSpecificManagedObject() method within nmr's 
org.apache.servicemix.nmr.management.ManagementAgent, which seems to be the 
delegation target for all JBI MBean registrations.

The issue is, the object passed into "manageNamedObject()", which passes object 
and object name, and subsequently gets filtered out through the call to 
getTypeSpecificManagedObject, which returns null.

This same code (ie. Apache ODE) manages to register the mbean just fine on smx 
3, and we have APIs that depend on this API being available over the NMR or JMX.

Why does this method return null if there's no impl of 
ManagedEndpoint/Nameable, and is the only endpoint for MBean registration? 

    protected Object getTypeSpecificManagedObject(Object object) throws 
NotCompliantMBeanException {
        return object instanceof ManagedEndpoint
               ? object
               : object instanceof Nameable
                 ? new StandardMBean(object, 
((Nameable)object).getPrimaryInterface())
                 : null;
    }

It seems like the the JBI-->JMX bridge is completely broken.  The context 
supplied by JBI CompentContext.getMBeanServer() will not register MBeans on 
smx4.  It just so happens that Apache ODE depends on ComponentContext being the 
source for its MBeanServer.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to