2010-05-13 5 views
2

Мне нужно некоторое направление с JMX и Java EE.JMX - автоматическая регистрация MBean при развертывании приложения

Я знаю (после нескольких недель исследований), что спецификация JMX отсутствует в отношении развертывания. Для того, что я ищу, существует несколько конкретных реализаций для поставщиков, но ни один из них не является перекрестным поставщиком. Я хотел бы автоматизировать развертывание MBeans и регистрацию на сервере. Мне нужен сервер для загрузки и регистрации моего MBeand, когда приложение развертывается и удаляется, когда приложение не развернуто.

Я разрабатываю с: NetBean 6.7.1, GlassFish 2.1, Java EE 5, EJB 3

Более конкретно, мне нужен способ управления пробегов службы таймера. Моему приложению необходимо запустить различные агенты архивирования и пакетную отчетность. Я надеялся, что JMX предоставит мне удаленный доступ для создания и управления службами таймера и позволит пользователю создать свое собственное расписание. Если JMX автоматически регистрируется при развертывании приложения, пользователь может сразу подключиться и управлять расписанием. С другой стороны, как EJB может подключиться/получить доступ к MBean?

Большое спасибо заранее. Gadi.

ответ

4

Несколько лет назад я исследовал JMX и EJB в Glassfish, поэтому не помню всех деталей. Но это может помочь.

  1. Glassfish конкретных JMX. Glassfish имеет AMX и custom MBean. AFAIK, такие компоненты предназначены для мониторинга самого сервера, а не для тесного взаимодействия с конкретным приложением. Такой bean-компонент можно сделать устойчивым, и Glassfish сохранит свое значение где-то через перезапуск. Может быть, посмотри.

  2. Регистрация и поиск. Вы можете в любое время зарегистрировать MBean из приложения, используя MBeanPlatform, или MBeanServer. См. Ссылку this, я точно не помню. Вы также можете искать другие компоненты JMX и вызывать операции над ними. Однако имена для поиска немного сумасшедшие. Вы можете зарегистрировать MBean, когда приложение. начинается с ServletContextListener.

  3. загрузчиков классов и развертывания. MBeans и экземпляры EJB находятся в отличном Classloader. Я думаю, вам нужно разместить .jar с реализацией MBean в структуре каталога развертывания Glassfish или добавить его в список .jar в пути к классам через консоль администратора. Вы можете относительно легко зарегистрировать компонент из модуля EJB, но компонент не может легко получить доступ к EJB, по крайней мере, из моего опыта.

Мне удалось использовать простой JMX для отображения статистики из моего приложения EJB, и это работало относительно хорошо. Но я не знаю, достаточно ли иметь что-то более интерактивное, как в вашем случае, когда вы хотите, чтобы EJB изменил свое поведение в зависимости от таймера, настроенного с помощью JMX. Боюсь, у вас будут проблемы с этим подходом.

Надеюсь, что это поможет, несмотря на неопределенность того, что я помню.

+0

Благодарим вас, я ценю время, которое вы приняли, чтобы ответить на мой вопрос.Может быть, вы можете предложить своим опытом способ управлять/настраивать службы таймера гибким способом, чтобы он не был жестко закодирован в продукт? Большое спасибо, Гади. – Gadi

+0

Другие варианты (1) использовать дескриптор развертывания с 'env-entry' (2) использовать базу данных для хранения информации о конфигурации (3) использовать внешний файл конфигурации. – ewernli

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