Class MBeanContainer

    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static java.util.concurrent.ConcurrentMap<java.lang.String,​java.util.concurrent.atomic.AtomicInteger> __unique  
      private java.util.concurrent.ConcurrentMap<java.lang.Object,​Container> _beans  
      private java.lang.String _domain  
      private java.util.concurrent.ConcurrentMap<java.lang.Object,​javax.management.ObjectName> _mbeans  
      private javax.management.MBeanServer _mbeanServer  
      private java.util.concurrent.ConcurrentMap<java.lang.Class,​MetaData> _metaData  
      private boolean _useCacheForOtherClassLoaders  
      private static Logger LOG  
      private static Container ROOT  
      • Fields inherited from interface org.eclipse.jetty.util.component.Dumpable

        KEY
    • Constructor Summary

      Constructors 
      Constructor Description
      MBeanContainer​(javax.management.MBeanServer server)
      Constructs MBeanContainer
      MBeanContainer​(javax.management.MBeanServer server, boolean cacheOtherClassLoaders)
      Constructs MBeanContainer
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void beanAdded​(Container parent, java.lang.Object obj)  
      void beanRemoved​(Container parent, java.lang.Object obj)  
      void destroy()  
      java.lang.String dump()  
      void dump​(java.lang.Appendable out, java.lang.String indent)
      Dump this object (and children) into an Appendable using the provided indent after any new lines.
      java.lang.Object findBean​(javax.management.ObjectName objectName)
      Lookup an instance by object name
      private static java.lang.reflect.Constructor<?> findConstructor​(java.lang.Class<?> klass)  
      javax.management.ObjectName findMBean​(java.lang.Object object)
      Lookup an object name by instance
      (package private) static MetaData findMetaData​(MBeanContainer container, java.lang.Class<?> klass)  
      java.lang.String getDomain()
      Retrieve domain name used to add MBeans
      javax.management.MBeanServer getMBeanServer()
      Retrieve instance of MBeanServer used by container
      private static MetaData getMetaData​(MBeanContainer container, java.lang.Class<?> klass)  
      boolean isUseCacheForOtherClassLoaders()  
      java.lang.String makeName​(java.lang.String basis)  
      java.lang.Object mbeanFor​(java.lang.Object o)
      Creates an ObjectMBean for the given object.
      (package private) static java.lang.Object mbeanFor​(MBeanContainer container, java.lang.Object o)  
      private static MetaData newMetaData​(MBeanContainer container, java.lang.Class<?> klass)  
      void setDomain​(java.lang.String domain)
      Set domain to be used to add MBeans
      private void unregister​(javax.management.ObjectName objectName)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface org.eclipse.jetty.util.component.Dumpable

        dumpSelf
    • Field Detail

      • LOG

        private static final Logger LOG
      • __unique

        private static final java.util.concurrent.ConcurrentMap<java.lang.String,​java.util.concurrent.atomic.AtomicInteger> __unique
      • _mbeanServer

        private final javax.management.MBeanServer _mbeanServer
      • _useCacheForOtherClassLoaders

        private final boolean _useCacheForOtherClassLoaders
      • _metaData

        private final java.util.concurrent.ConcurrentMap<java.lang.Class,​MetaData> _metaData
      • _beans

        private final java.util.concurrent.ConcurrentMap<java.lang.Object,​Container> _beans
      • _mbeans

        private final java.util.concurrent.ConcurrentMap<java.lang.Object,​javax.management.ObjectName> _mbeans
      • _domain

        private java.lang.String _domain
    • Constructor Detail

      • MBeanContainer

        public MBeanContainer​(javax.management.MBeanServer server)
        Constructs MBeanContainer
        Parameters:
        server - instance of MBeanServer for use by container
      • MBeanContainer

        public MBeanContainer​(javax.management.MBeanServer server,
                              boolean cacheOtherClassLoaders)
        Constructs MBeanContainer
        Parameters:
        server - instance of MBeanServer for use by container
        cacheOtherClassLoaders - If true, MBeans from other classloaders (eg WebAppClassLoader) will be cached. The cache is never flushed, so this should be false if some classloaders do not live forever.
    • Method Detail

      • getMBeanServer

        public javax.management.MBeanServer getMBeanServer()
        Retrieve instance of MBeanServer used by container
        Returns:
        instance of MBeanServer
      • isUseCacheForOtherClassLoaders

        @ManagedAttribute(value="Whether to use the cache for MBeans loaded by other ClassLoaders",
                          readonly=true)
        public boolean isUseCacheForOtherClassLoaders()
      • setDomain

        public void setDomain​(java.lang.String domain)
        Set domain to be used to add MBeans
        Parameters:
        domain - domain name
      • getDomain

        @ManagedAttribute("The default ObjectName domain")
        public java.lang.String getDomain()
        Retrieve domain name used to add MBeans
        Returns:
        domain name
      • mbeanFor

        public java.lang.Object mbeanFor​(java.lang.Object o)

        Creates an ObjectMBean for the given object.

        Attempts to create an ObjectMBean for the object by searching the package and class name space. For example an object of the type:

         class com.acme.MyClass extends com.acme.util.BaseClass implements com.acme.Iface
         

        then this method would look for the following classes:

        • com.acme.jmx.MyClassMBean
        • com.acme.util.jmx.BaseClassMBean
        • org.eclipse.jetty.jmx.ObjectMBean
        Parameters:
        o - The object
        Returns:
        A new instance of an MBean for the object or null.
      • mbeanFor

        static java.lang.Object mbeanFor​(MBeanContainer container,
                                         java.lang.Object o)
      • findConstructor

        private static java.lang.reflect.Constructor<?> findConstructor​(java.lang.Class<?> klass)
      • findMBean

        public javax.management.ObjectName findMBean​(java.lang.Object object)
        Lookup an object name by instance
        Parameters:
        object - instance for which object name is looked up
        Returns:
        object name associated with specified instance, or null if not found
      • findBean

        public java.lang.Object findBean​(javax.management.ObjectName objectName)
        Lookup an instance by object name
        Parameters:
        objectName - object name of instance
        Returns:
        instance associated with specified object name, or null if not found
      • makeName

        public java.lang.String makeName​(java.lang.String basis)
        Parameters:
        basis - name to strip of special characters.
        Returns:
        normalized name
      • dump

        public void dump​(java.lang.Appendable out,
                         java.lang.String indent)
                  throws java.io.IOException
        Description copied from interface: Dumpable
        Dump this object (and children) into an Appendable using the provided indent after any new lines. The indent should not be applied to the first object dumped.
        Specified by:
        dump in interface Dumpable
        Parameters:
        out - The appendable to dump to
        indent - The indent to apply after any new lines.
        Throws:
        java.io.IOException - if unable to write to Appendable
      • dump

        public java.lang.String dump()
        Specified by:
        dump in interface Dumpable
      • unregister

        private void unregister​(javax.management.ObjectName objectName)