2012-06-21 3 views
0

В соответствии с JMX API я могу использовать классы, такие как StandardMBean и StandardEmitterMBean, для использования перехватов настройки. SO вместо регистрации непосредственно MXBean я могу обернуть его в один из этих классов. Это прекрасно работает, но как только я пытаюсь использовать структуру уведомлений JMX, Notification будет запущен при использовании этого завернутого класса вместо MXBean. Некоторые примеры кода: интерфейсJMX: Wrapped 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 к моему боба, подписаться на уведомления механизм и выполнить метод hello() ничего не происходит. Только при регистрации MXBean напрямую все работает нормально. Он также не работает при добавлении пользовательских NotificationListeners в мой MXBean. Я уже пытался каким-то образом поймать это событие уведомления в классе упаковки и как-то перенаправить его, но это тоже не сработало. Вы хоть представляете, что мне здесь не хватает? Или это просто не работает при использовании одного из классов упаковки?

Заранее благодарим за вашу помощь!

ответ

0

Вкратце (на мобильном устройстве см.), Вам необходимо расширить свой класс, чтобы предоставить метаданные уведомлений-сведений для ваших типов уведомлений.

+0

Спасибо за ваш ответ Николас. Это то, что я узнал. Кажется, что JMX применяет уведомление к классу wrapping и не передает его на завернутый. – Sancho

Смежные вопросы