public abstract class AbstractJMXManager extends Object
This works by using a "marker bean" that is registered with an MBean server and also with the singleton instance of this class. Statistics beans are added to the singleton instance by their appender. Either type of addition is a trigger to ensure that the statistics beans are registered with all known servers.
The object name used to register the marker bean is retained, and used as the base for the object name(s) used to register the statistics bean(s): the stats bean name will append ",appender=X", where X is the appender name.
Subclasses are expected to manage the singleton instance.
| Modifier and Type | Field and Description |
|---|---|
protected InternalLogger |
logger |
protected Map<MBeanServer,String> |
registrationNames |
protected Map<Object,List<MBeanServer>> |
registrations |
protected Map<String,AbstractWriterStatistics> |
statsBeans |
protected Map<String,Class<?>> |
statsBeanTypes |
| Modifier | Constructor and Description |
|---|---|
protected |
AbstractJMXManager(InternalLogger logger) |
| Modifier and Type | Method and Description |
|---|---|
void |
addMarkerBean(Object bean,
MBeanServer server,
ObjectName registrationName)
Adds relationship between a marker bean and an MBeanServer.
|
void |
addStatsBean(String appenderName,
AbstractWriterStatistics statsBean,
Class<?> statsBeanClass)
Adds a writer's statsbean and its class to the internal tracking tables.
|
protected void |
registerAppenderBean(String appenderName,
MBeanServer mbeanServer)
Registers an appender's stats bean with a server.
|
void |
removeMarkerBean(Object bean)
Will deregister a StatisticsMBean instance from all known servers.
|
void |
removeStatsBean(String appenderName)
Removes information about a stats bean from the internal tables and deregisters
it from any MBeanServers.
|
protected void |
unregisterAppenderBean(String appenderName,
MBeanServer mbeanServer)
Deregisters an appender's stats bean from a server.
|
protected InternalLogger logger
protected Map<Object,List<MBeanServer>> registrations
protected Map<MBeanServer,String> registrationNames
protected Map<String,AbstractWriterStatistics> statsBeans
protected AbstractJMXManager(InternalLogger logger)
public void addMarkerBean(Object bean, MBeanServer server, ObjectName registrationName)
Attempting to add the same bean/server more than once is silently ignored (it should never happen in the real world, so does not rate a check).
public void removeMarkerBean(Object bean)
public void addStatsBean(String appenderName, AbstractWriterStatistics 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 removeStatsBean(String appenderName)
protected void registerAppenderBean(String appenderName, MBeanServer mbeanServer)
protected void unregisterAppenderBean(String appenderName, MBeanServer mbeanServer)
Copyright © 2023. All rights reserved.