JMX - MBean автоматическая регистрация при развертывании приложения - PullRequest
2 голосов
/ 13 мая 2010

Мне нужно какое-то направление с JMX и Java EE.

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

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

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

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

1 Ответ

4 голосов
/ 13 мая 2010

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

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

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

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

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

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

...