Package org.eclipse.jetty.jmx
Class MBeanContainer
- java.lang.Object
-
- org.eclipse.jetty.jmx.MBeanContainer
-
- All Implemented Interfaces:
Container.InheritedListener
,Container.Listener
,Destroyable
,Dumpable
@ManagedObject("The component that registers beans as MBeans") public class MBeanContainer extends java.lang.Object implements Container.InheritedListener, Dumpable, Destroyable
Container class for the MBean instances
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Dumpable
Dumpable.DumpableContainer
-
-
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
-
Constructor Summary
Constructors Constructor Description MBeanContainer(javax.management.MBeanServer server)
Constructs MBeanContainerMBeanContainer(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 nameprivate 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 MBeansjavax.management.MBeanServer
getMBeanServer()
Retrieve instance of MBeanServer used by containerprivate 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 MBeansprivate void
unregister(javax.management.ObjectName objectName)
-
-
-
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
-
ROOT
private static final Container ROOT
-
_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 containercacheOtherClassLoaders
- 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)
-
findMetaData
static MetaData findMetaData(MBeanContainer container, java.lang.Class<?> klass)
-
getMetaData
private static MetaData getMetaData(MBeanContainer container, java.lang.Class<?> klass)
-
newMetaData
private static MetaData newMetaData(MBeanContainer container, java.lang.Class<?> klass)
-
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
-
beanAdded
public void beanAdded(Container parent, java.lang.Object obj)
- Specified by:
beanAdded
in interfaceContainer.Listener
-
beanRemoved
public void beanRemoved(Container parent, java.lang.Object obj)
- Specified by:
beanRemoved
in interfaceContainer.Listener
-
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.
-
destroy
public void destroy()
- Specified by:
destroy
in interfaceDestroyable
-
unregister
private void unregister(javax.management.ObjectName objectName)
-
-