@ManagedObject(value="The component that registers beans as MBeans") public class MBeanContainer extends java.lang.Object implements Container.InheritedListener, Dumpable, Destroyable
Modifier and Type | Field and 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 and Description |
---|
MBeanContainer(javax.management.MBeanServer server)
Constructs MBeanContainer
|
MBeanContainer(javax.management.MBeanServer server,
boolean cacheOtherClassLoaders)
Constructs MBeanContainer
|
Modifier and Type | Method and 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) |
(package private) static java.lang.Object |
mbeanFor(MBeanContainer container,
java.lang.Object o) |
java.lang.Object |
mbeanFor(java.lang.Object o)
Creates an ObjectMBean for the given object.
|
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) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
dump, dumpContainer, dumpIterable, dumpMapEntries, dumpObject, dumpObjects, dumpSelf, named
private static final Logger LOG
private static final java.util.concurrent.ConcurrentMap<java.lang.String,java.util.concurrent.atomic.AtomicInteger> __unique
private static final Container ROOT
private final javax.management.MBeanServer _mbeanServer
private final boolean _useCacheForOtherClassLoaders
private final java.util.concurrent.ConcurrentMap<java.lang.Class,MetaData> _metaData
private final java.util.concurrent.ConcurrentMap<java.lang.Object,Container> _beans
private final java.util.concurrent.ConcurrentMap<java.lang.Object,javax.management.ObjectName> _mbeans
private java.lang.String _domain
public MBeanContainer(javax.management.MBeanServer server)
server
- instance of MBeanServer for use by containerpublic MBeanContainer(javax.management.MBeanServer server, boolean cacheOtherClassLoaders)
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.public javax.management.MBeanServer getMBeanServer()
@ManagedAttribute(value="Whether to use the cache for MBeans loaded by other ClassLoaders", readonly=true) public boolean isUseCacheForOtherClassLoaders()
public void setDomain(java.lang.String domain)
domain
- domain name@ManagedAttribute(value="The default ObjectName domain") public java.lang.String getDomain()
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:
o
- The objectstatic java.lang.Object mbeanFor(MBeanContainer container, java.lang.Object o)
static MetaData findMetaData(MBeanContainer container, java.lang.Class<?> klass)
private static MetaData getMetaData(MBeanContainer container, java.lang.Class<?> klass)
private static MetaData newMetaData(MBeanContainer container, java.lang.Class<?> klass)
private static java.lang.reflect.Constructor<?> findConstructor(java.lang.Class<?> klass)
public javax.management.ObjectName findMBean(java.lang.Object object)
object
- instance for which object name is looked uppublic java.lang.Object findBean(javax.management.ObjectName objectName)
objectName
- object name of instancepublic void beanAdded(Container parent, java.lang.Object obj)
beanAdded
in interface Container.Listener
public void beanRemoved(Container parent, java.lang.Object obj)
beanRemoved
in interface Container.Listener
public java.lang.String makeName(java.lang.String basis)
basis
- name to strip of special characters.public void dump(java.lang.Appendable out, java.lang.String indent) throws java.io.IOException
Dumpable
public void destroy()
destroy
in interface Destroyable
private void unregister(javax.management.ObjectName objectName)