Package org.oddjob.jmx
Class JMXServiceJob
java.lang.Object
org.oddjob.framework.extend.BaseComponent
org.oddjob.framework.extend.SimpleService
org.oddjob.jmx.ClientBase
org.oddjob.jmx.JMXServiceJob
- All Implemented Interfaces:
Runnable,ArooaContextAware,ArooaSessionAware,BeanDirectoryOwner,PropertyChangeNotifier,Iconic,LogEnabled,Resettable,Stateful,Stoppable,Structural
- Author:
- Rob Gordon
- Attributes of MBeans can be read and changed.
- Operations on MBeans can be invoked.
- MBeans are displayed as part of Oddjob's job hierarchy within Oddjob Explorer.
Description
Expose a JMX Server so that Oddjob jobs can interact with it.Features of this service include:
${my-jmx-world/mydomain:type=greeting,name=hello}
Note that what is being referenced here is an Oddjob wrapper around
the MBean that allows operations and attributes of the MBean to accessed
elsewhere. What is referenced is not an MBean instance.
The example below shows an MBean (wrapper) being passed as the source
property to an InvokeJob.
Attributes of the MBean can be accessed as if they were properties of the MBean. If the MBean above has an attribute 'FullText' its value can be accessed using the expression:
${my-jmx-world/mydomain:type=greeting,name=hello.FullText}
If an MBean Object Name contains dots (.) it must be quoted using double
quotes. If the domain in the above example was my.super.domain the
MBean can be identified with the expression:
${my-jmx-world/"my.super.domain:type=greeting,name=hello"}
and the attribute with:
${my-jmx-world/"my.super.domain:type=greeting,name=hello".FullText}
Note that this support for quoting does not apply to Oddjob property
expansion expressions in general - only too these MBean identifiers.Example
This example demonstrates reading an attribute, setting an attribute and invoking an operation.
<oddjob>
<job>
<sequential id="sequential">
<jobs>
<jmx:service id="jmx-service" connection="localhost:13013" xmlns:jmx="http://rgordon.co.uk/oddjob/jmx"/>
<echo id="echo-farm">${jmx-service/"fruit:service=vendor,name=Pickles".Farm}</echo>
<set>
<values>
<value key="jmx-service/fruit:service=vendor,name=Pickles.Rating" value="4.2"/>
</values>
</set>
<invoke id="invoke-quote" function="quote">
<parameters>
<value value="apples"/>
<value value="2012-08-06"/>
<value value="42"/>
</parameters>
<source>
<value value="${jmx-service/fruit:service=vendor,name=Pickles}"/>
</source>
</invoke>
</jobs>
</sequential>
</job>
</oddjob>
-
Nested Class Summary
Nested classes/interfaces inherited from class org.oddjob.jmx.ClientBase
ClientBase.WhyStop -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddStructuralListener(StructuralListener listener) Add a listener.protected voiddoStart(MBeanServerConnection mbsc, ScheduledExecutorService notificationProcessor) Overridden by subclasses to provide a specific startup.protected voidonStop(ClientBase.WhyStop why) Get theBeanDirectory.voidremoveStructuralListener(StructuralListener listener) Remove a listener.Methods inherited from class org.oddjob.jmx.ClientBase
doStop, getConnection, getEnvironment, getHeartbeat, onStart, onStop, setConnection, setEnvironment, setHeartbeatMethods inherited from class org.oddjob.framework.extend.SimpleService
fireDestroyedState, getName, getStateChanger, hardReset, iconHelper, logger, loggerName, onDestroy, run, setName, softReset, stateHandler, stop, toStringMethods inherited from class org.oddjob.framework.extend.BaseComponent
addIconListener, addPropertyChangeListener, addStateListener, configure, destroy, firePropertyChange, getArooaSession, iconForId, initialise, lastStateEvent, onConfigured, onInitialised, removeIconListener, removePropertyChangeListener, removeStateListener, save, save, setArooaContext, setArooaSessionMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.oddjob.Stateful
addStateListener, lastStateEvent, removeStateListener
-
Constructor Details
-
JMXServiceJob
public JMXServiceJob()
-
-
Method Details
-
doStart
protected void doStart(MBeanServerConnection mbsc, ScheduledExecutorService notificationProcessor) throws IOException Description copied from class:ClientBaseOverridden by subclasses to provide a specific startup.- Specified by:
doStartin classClientBase- Parameters:
mbsc-notificationProcessor-- Throws:
IOException
-
onStop
- Specified by:
onStopin classClientBase
-
provideBeanDirectory
Description copied from interface:BeanDirectoryOwnerGet theBeanDirectory. This method may return null if the BeanDirectory isn't available.- Specified by:
provideBeanDirectoryin interfaceBeanDirectoryOwner- Returns:
- The
BeanDirectoryor null.
-
addStructuralListener
Description copied from interface:StructuralAdd a listener. The listener will immediately receive add notifications for all existing children.- Specified by:
addStructuralListenerin interfaceStructural- Parameters:
listener- The listener.
-
removeStructuralListener
Description copied from interface:StructuralRemove a listener.- Specified by:
removeStructuralListenerin interfaceStructural- Parameters:
listener- The listener.
-