Receiving notification from other MBeans
joshua883 Jun 1, 2009 9:17 AMHi all!
I'm trying to receive notifications from a simple MBean component. The MBean (taken from wikis) simply dumps a Message when the operation printMessage is invoked:
public class StartupService extends ServiceMBeanSupport implements StartupServiceMBean { // Our message attribute private String message = "Sorry no message today"; // Getters and Setters public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } // The printMessage operation public void printMessage() { log.info(message); } // The lifecycle protected void startService() throws Exception { log.info("Starting with message=" + message); } protected void stopService() throws Exception { log.info("Stopping with message=" + message); } }
The notification Listener (also taken from wikis) extends ListenerServiceMBeanSupport
public class NotificationListener extends ListenerServiceMBeanSupport implements NotificationListenerMBean { // Constructors -------------------------------------------------- /** * CTOR **/ public NotificationListener() { // empty } // NotificationListenerMBean implementation ---------------------- // No attributes or operations in this example to implement! // Lifecycle control (ServiceMBeanSupport) ----------------------- /** * Start **/ public void startService() throws Exception { // subscribe for notification, true=dynamic super.subscribe(true); // listener is me! } /** * Stop **/ public void stopService() throws Exception { // unsubscribe for notifications super.unsubscribe(); } // ListenerServiceMBeanSupport override ------------------------ /** * Overriden to add handling! **/ public void handleNotification2(Notification notification, Object handback) { log.info("Got notification: " + notification + ", handback: " + handback); } }
Then I've tried to adapt the service xml file so that it receives notifications from the domain com.sample.jmx:
<mbean code="com.sample.jmx.StartupService" name="com.packtpub.jmx:service=StartupClass"> <attribute name="Message">Hello World</attribute> </mbean> <server> <mbean code="jboss.example.NotificationListener" name="jboss.example:name=NotificationListener"> <attribute name="SubscriptionList"> <subscription-list> <mbean name="*:service=invoker,*" handback="anObject"></mbean> <mbean name="com.sample.jmx:*"></mbean> <notification type="JBOSS_MONITOR_NOTIFICATION"></notification> <mbean name="JMImplementation:type=MBeanServerDelegate"> <notification type="JMX.mbean.registered"></notification> </mbean> </subscription-list> </attribute> </mbean> </server>
Unfortunately I don't receive any notification when the method printMessage is invoked....have you got any idea what's wrong?
JBoss release used 5.0.0 GA with JDK 1.6
Thanks a lot
John