Лучшая практика для отправки уведомлений JMX - PullRequest
3 голосов
/ 05 апреля 2011

Поиск рекомендаций по определению MBean, который отправляет уведомления, особенно по типу уведомлений. JMX Best Practices на сайте Oracle гласит следующее.Но он немного старый и до Java6.

Уведомления должны быть экземплярами javax.management.Notification или одним из подклассов из пространства имен javax.management.Информация, которая не вписывается ни в один из этих подклассов, должна передаваться путем присоединения CompositeData к уведомлению с помощью метода setUserData.

Также на сайте Oracle я вижу, что Weblogic определяет некоторые из своих собственных подклассов,например, WebLogicLogNotification.Его Best Practices гласит:

Все объекты уведомлений JMX расширяют тип объекта javax.management.Notification.JMX и WebLogic Server определяют дополнительные типы объектов уведомлений, такие как javax.management.AttributeChangeNotification.Дополнительные типы объектов содержат специализированные наборы информации, которые подходят для различных типов событий.

Наши уведомления не соответствуют ни одному из стандартных подклассов, как, например, WLS, учитывая возможность определения нашего собственного подкласса с помощью пользовательскихполучатели информации, которую мы хотим передать с помощью уведомлений.Или было бы лучше придерживаться базового javax.management.Notification и просто прикрепить нашу информацию с помощью универсального setUserData (Object)?Если мы сделаем последнее, я полагаю, что объект должен иметь тип JMX, такой как CompositeData, который выглядит не так хорошо.Мысли о том, что было бы лучше с точки зрения потребителя?

РЕДАКТИРОВАТЬ: С точки зрения потребителей, я предполагаю, что недостатком пользовательского подкласса является то, что они должны будут включить это в свое приложение / classpath.

1 Ответ

4 голосов
/ 05 апреля 2011

почти всегда плохая идея использовать пользовательские типы данных в jmx.это очень ограничение.Придерживайтесь открытых типов, и ваши данные могут быть использованы любым клиентом jmx (java или любым другим).

обратите внимание, вы всегда можете предоставить некоторые вспомогательные классы, которые делают своего рода "пользовательский компонент" <-> "открытымТип "конверсия.классы, которые имеют доступ к вспомогательным классам, могут использовать эти удобные методы (например, ThreadInfo.from () ), в то время как внешний и не Java-код все еще может потреблять данные.

...