Hi,
I've checked in a new baseclass org.jboss.system.ListenerServiceMBeanSupport
(& ListenerServiceMBean) that helps writing Service MBeans that are
Notification listeners, too:
/**
* An abstract base class that provides for declarative JMX notification
* subscription handling.
* <p>
* A JBoss service that is in addition a NotificationListener can
* subclass ListenerServiceMBeanSupport instead of ServiceMBeanSupport
* and specify at instantiation-time, inline in the MBean descriptor using
the
* SubscriptionList attribute, the set of MBeans/notifications the
* service wants to subscribe/receive.
* <p>
* Just before start() the baseclass will register to those MBeans and for
* those notifications that match the specified criteria. Similarly,
* just after stop() the baseclass will automatically unsubscribe.
* <p>
* In addition, while started, it will monitor for registration events
* from the MBeanServer and automatically subscribe to new instances
* of MBeans that match the subscription criteria. Monitoring for
* unsubscribe events in not necessary, since the MBeanServer
* automatically removes subscriptions to unregistering MBeans.
* <p>
* Moreover, unless the service is properly started (state == STARTED)
* all incoming notifications will be consumed.
* <p>
* To handle the incoming notifications override the handleNotification2()
* method. The usual handleNotification() method should not be overriden,
* since it is used to monitor the incoming notifications for registration
* events coming from the MBeanServer, before delegating to
* handleNotification2().
**/
There is also a NotificationListener that demonstrates the usage of the base
class:
(from monitoring-service.xml, uncomment to activate)
<!-- Example of listening for notifications from JBoss monitors
<mbean code="org.jboss.monitor.notifications.NotificationListener"
name="jboss.jmx:service=NotificationListener">
<attribute name="SubscriptionList">
<subscription-list>
<mbean name="jboss.monitor:*">
<notification type="JBOSS_MONITOR_NOTIFICATION"/>
</mbean>
</subscription-list>
</attribute>
</mbean>
-->
(The above example with the proper output formating is more or less
equivalent to the ConsoleAlertListener, but without the dependencies - I'll
come back with suggestions...)
You may specify arbitrary subscription rules, like:
<subscription-list>
<mbean name="*:service=invoker,*" handback="aHandbackString"/>
<mbean name="JMImplementation:type=MBeanServerDelegate">
<notification type="JMX.mbean.registered"/>
[...]
</mbean
[...]
</subscription-list>
or even:
<mbean name="*:*"/>
You can easily monitor a single MBean, or the whole MBean server. You just
need to specify what to do with those Notifications.
Hope you find this useful. I've put a DTD at
system/src/resources/org/jboss/metadata/jboss-subscription.dtd
If the check-in locations are innapropriate, please let me know.
Regards
/Dimitris
-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004
Premiere Conference on Open Tools Development and Integration
See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
_______________________________________________
JBoss-Development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development