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

Reply via email to