org.mule.module.management.agent
Class ClassloaderSwitchingMBeanWrapper

java.lang.Object
  extended by javax.management.StandardMBean
      extended by org.mule.module.management.agent.ClassloaderSwitchingMBeanWrapper
All Implemented Interfaces:
javax.management.DynamicMBean, javax.management.MBeanRegistration

public class ClassloaderSwitchingMBeanWrapper
extends javax.management.StandardMBean
implements javax.management.MBeanRegistration

Ensures any external jmx invocation (like e.g. remote) is executed with a correct application classloader (otherwise a bootstrap classloader is used by default for platform mbean server). Note the irony - extends StandardMBean, but StandardMBean is not your 'standard mbean', but rather a special kind of the DynamicMBean which generates attributes/operations based on the passed in interface (via reflection).


Field Summary
protected  Log logger
           
 
Constructor Summary
ClassloaderSwitchingMBeanWrapper(T implementation, java.lang.Class<T> mbeanInterface, java.lang.ClassLoader executionClassLoader)
           
 
Method Summary
 java.lang.ClassLoader getExecutionClassLoader()
           
 java.lang.Object invoke(java.lang.String actionName, java.lang.Object[] params, java.lang.String[] signature)
           
 void postDeregister()
           
 void postRegister(java.lang.Boolean registrationDone)
           
 void preDeregister()
           
 javax.management.ObjectName preRegister(javax.management.MBeanServer server, javax.management.ObjectName name)
           
 void setExecutionClassLoader(java.lang.ClassLoader executionClassLoader)
           
 
Methods inherited from class javax.management.StandardMBean
cacheMBeanInfo, getAttribute, getAttributes, getCachedMBeanInfo, getClassName, getConstructors, getDescription, getDescription, getDescription, getDescription, getDescription, getDescription, getDescription, getImpact, getImplementation, getImplementationClass, getMBeanInfo, getMBeanInterface, getParameterName, getParameterName, setAttribute, setAttributes, setImplementation
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logger

protected Log logger
Constructor Detail

ClassloaderSwitchingMBeanWrapper

public ClassloaderSwitchingMBeanWrapper(T implementation,
                                        java.lang.Class<T> mbeanInterface,
                                        java.lang.ClassLoader executionClassLoader)
                                 throws javax.management.NotCompliantMBeanException
Throws:
javax.management.NotCompliantMBeanException
Method Detail

invoke

public java.lang.Object invoke(java.lang.String actionName,
                               java.lang.Object[] params,
                               java.lang.String[] signature)
                        throws javax.management.MBeanException,
                               javax.management.ReflectionException
Specified by:
invoke in interface javax.management.DynamicMBean
Overrides:
invoke in class javax.management.StandardMBean
Throws:
javax.management.MBeanException
javax.management.ReflectionException

getExecutionClassLoader

public java.lang.ClassLoader getExecutionClassLoader()

setExecutionClassLoader

public void setExecutionClassLoader(java.lang.ClassLoader executionClassLoader)

preRegister

public javax.management.ObjectName preRegister(javax.management.MBeanServer server,
                                               javax.management.ObjectName name)
                                        throws java.lang.Exception
Specified by:
preRegister in interface javax.management.MBeanRegistration
Overrides:
preRegister in class javax.management.StandardMBean
Throws:
java.lang.Exception

postRegister

public void postRegister(java.lang.Boolean registrationDone)
Specified by:
postRegister in interface javax.management.MBeanRegistration
Overrides:
postRegister in class javax.management.StandardMBean

preDeregister

public void preDeregister()
                   throws java.lang.Exception
Specified by:
preDeregister in interface javax.management.MBeanRegistration
Overrides:
preDeregister in class javax.management.StandardMBean
Throws:
java.lang.Exception

postDeregister

public void postDeregister()
Specified by:
postDeregister in interface javax.management.MBeanRegistration
Overrides:
postDeregister in class javax.management.StandardMBean


Copyright © 2003-2010 MuleSoft, Inc.. All Rights Reserved.