JMX:Wrapped MXBean不发送通知

时间:2012-06-21 06:33:37

标签: notifications jmx

根据JMX API,我可以使用StandardMBeanStandardEmitterMBean等类来使用自定义挂钩。因此,我可以将其包装在其中一个类中,而不是直接注册MXBean本身。 这工作正常,但是当我尝试使用JMX Notification框架时,在使用此包装类而不是MXBean时,将不会触发通知。 一些示例代码:

MXBean接口

public interface MyMXBean {
    public void hello();
}

实施

public class MyMXBeanImpl extends NotificationBroadcasterSupport implements MyMXBean {

    @Override    
    public void hello() {
        Notification n = //...creating new Notification
        sendNotification(n);
    }
}

注册:

public class Registration() {
    public static void main(String[] args) throws Exception {

        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();  
        ObjectName oname = 
            new ObjectName("example:type=myexample,name=MyExamleMXBean");
        // does not fire any notifications      
        mbs.registerMBean(
            new StandardEmitterMBean(new MyMXBeanImpl(), MyMXBean.class, true), oname);

        // would fire the notification
        // mbs.register(new MyMXBeanImpl(), oname);
    }
}

当我将JConsole连接到我的bean时,订阅Notification机制并执行hello()方法没有任何反应。只有在直接注册MXBean时,一切正常。 将自定义NotificationListeners添加到MXBean时,它也无法正常工作。 我已经尝试以某种方式在包装类中捕获此Notification事件并以某种方式转发它,但这也不起作用。 你知道我在这里缺少什么吗?或者在使用其中一个包装类时它是否正常工作?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

简要地说(在手机上看到),您需要扩展您的课程,为您的通知类型提供通知信息元数据。