Class JndiJmx
java.lang.Object
org.apache.commons.modeler.BaseModelMBean
org.apache.commons.modeler.JndiJmx
- All Implemented Interfaces:
EventListener, DynamicMBean, MBeanRegistration, ModelMBean, ModelMBeanNotificationBroadcaster, NotificationBroadcaster, NotificationListener, PersistentMBean
Link between JNDI and JMX. JNDI can be used for persistence ( it is
an API for storing hierarchical data and a perfect fit for that ), as
well as an alternate view of the MBean registry.
If this component is enabled, all MBeans will be registered in JNDI, and
all attributes that are set via JMX can be stored in a DirContext.
This acts as a "recorder" for creation of mbeans and attribute changes
done via JMX.
XXX How can we control ( filter ) which mbeans will be registere ? Or
attributes ?
XXX How can we get the beans and attributes loaded before jndijmx ?
The intended use:
- do whatever you want to start the application
- load JndiJmx as an mbean
- make changes via JMX. All changes are recorded
- you can use JndiJmx to save the changes in a Jndi context.
- you can use JndiJmx to load changes from a JndiContext and replay them.
The main benefit is that only changed attributes are saved, and the Jndi
layer can preserve most of the original structure of the config file. The
alternative is to override the config files with config info extracted
from the live objects - but it's very hard to save only what was actually
changed and preserve structure and comments.
- Author:
- Costin Manolache
-
Nested Class Summary
Nested classes/interfaces inherited from class BaseModelMBean
BaseModelMBean.MethodKey -
Field Summary
FieldsModifier and TypeFieldDescription(package private) Hashtableprotected Contextprotected Contextprotected Context(package private) Hashtableprivate static org.apache.commons.logging.Log(package private) MBeanServerFields inherited from class BaseModelMBean
attributeBroadcaster, generalBroadcaster, info, NO_ARGS_PARAM, NO_ARGS_PARAM_SIG, oname, registry, resource, resourceType, source -
Constructor Summary
ConstructorsConstructorDescriptionJndiJmx()Protected constructor to require use of the factory create method. -
Method Summary
Modifier and TypeMethodDescriptionvoidhandleNotification(Notification notification, Object handback) voidinit()voidreplay()voidIf a JNDI context is set, all components will be registered in the context.voidsetConfigContext(Context ctx) JNDI context where attributes will be stored for persistencevoidJNDI context for component descriptors ( metadata ).Methods inherited from class BaseModelMBean
addAttributeChangeNotificationListener, addNotificationListener, createDefaultModelMBeanInfo, createResource, getAttribute, getAttributes, getClassName, getJmxName, getManagedResource, getMBeanInfo, getModelerType, getNotificationInfo, getObjectName, getRegistry, initModelInfo, invoke, isModelMBeanInfoValid, load, postDeregister, postRegister, preDeregister, preRegister, removeAttributeChangeNotificationListener, removeAttributeChangeNotificationListener, removeNotificationListener, removeNotificationListener, removeNotificationListener, sendAttributeChangeNotification, sendAttributeChangeNotification, sendNotification, sendNotification, setAttribute, setAttributes, setManagedResource, setModeledType, setModelMBeanInfo, setRegistry, store, toString
-
Field Details
-
log
private static org.apache.commons.logging.Log log -
componentContext
-
descriptorContext
-
configContext
-
mserver
MBeanServer mserver -
attributes
Hashtable attributes -
instances
Hashtable instances
-
-
Constructor Details
-
JndiJmx
Protected constructor to require use of the factory create method.- Throws:
MBeanException
-
-
Method Details
-
setComponentContext
If a JNDI context is set, all components will be registered in the context.- Parameters:
ctx-
-
setDescriptorContext
JNDI context for component descriptors ( metadata ).- Parameters:
ctx-
-
setConfigContext
JNDI context where attributes will be stored for persistence -
handleNotification
- Specified by:
handleNotificationin interfaceNotificationListener
-
dumpStatus
-
replay
-
init
-