public class JMXManager extends Object
This object is implemented as an eagerly-instantiated singleton; for testing the implementation can be replaced. All methods are synchronized, to avoid race conditions between appender and StatisticsMBean registration.
| Modifier and Type | Field and Description |
|---|---|
protected Map<String,AbstractAppenderStatistics> |
appenderStatsBeans |
protected Map<String,Class<?>> |
appenderStatsBeanTypes |
protected Map<StatisticsMBean,List<MBeanServer>> |
knownServers |
| Constructor and Description |
|---|
JMXManager() |
| Modifier and Type | Method and Description |
|---|---|
void |
addAppender(String appenderName,
AbstractAppenderStatistics statsBean,
Class<?> statsBeanClass)
Adds an appender's statsbean and its class to the internal tracking tables.
|
void |
addStatisticsMBean(StatisticsMBean bean,
MBeanServer server,
ObjectName name)
Adds relationship between a StatisticsMBean and an MBeanServer to the
internal tables.
|
static JMXManager |
getInstance() |
protected void |
registerAppenderBean(String appenderName,
MBeanServer mbeanServer)
Registers an appender's stats bean with a server.
|
void |
removeAppender(String appenderName)
Removes information about an appender from the internal tables and deregisters
it from any MBeanServers.
|
void |
removeStatisticsMBean(StatisticsMBean bean)
Will deregister a StatisticsMBean instance from all known servers.
|
static void |
reset(JMXManager newManager)
Replaces the singleton instance with a new instance.
|
protected void |
unregisterAppenderBean(String appenderName,
MBeanServer mbeanServer)
Deregisters an appender's stats bean from a server.
|
protected Map<StatisticsMBean,List<MBeanServer>> knownServers
protected Map<String,AbstractAppenderStatistics> appenderStatsBeans
public static JMXManager getInstance()
public static void reset(JMXManager newManager)
public void addStatisticsMBean(StatisticsMBean bean, MBeanServer server, ObjectName name)
The StatisticsMBean table is based on object identity. Attempting to add the same bean/server more than once is silently ignored (should never happen in the real world).
public void removeStatisticsMBean(StatisticsMBean bean)
public void addAppender(String appenderName, AbstractAppenderStatistics statsBean, Class<?> statsBeanClass)
These tables are managed by appender name. Calling with the same name and same appender bean is silently ignored. Calling with the same name but a different appender bean is an error. In the real world, neither of these cases should happen, because the appender is registered during initialization.
public void removeAppender(String appenderName)
protected void registerAppenderBean(String appenderName, MBeanServer mbeanServer)
protected void unregisterAppenderBean(String appenderName, MBeanServer mbeanServer)
Copyright © 2018. All rights reserved.