ServiceMBean - это JMX, он является частью вашей JVM. тег сервлета загрузки при запуске в web.xml является частью вашего приложения J2EE.
JMX является частью J2SE, начиная с JDK 1.5. Таким образом, вы можете иметь один ServiceMBean на JVM. не за приложение. JMX используется в основном для мониторинга и управления JVM. Он обеспечивает доступ к такой информации, как: количество загруженных классов и число запущенных потоков, потребление памяти, статистика сбора мусора, обнаружение взаимоблокировок по требованию и другие. Другое распространенное использование - обновить кеш.
JMX позволит вам управлять вашим приложением и контролировать / контролировать его с помощью любой консоли управления, которую поддерживает ваш контейнер JMX. Примером может служить веб-приложение, которое реализует кэш справочных данных ...
Проблема, с которой мы сталкивались раньше, заключалась в том, что нам иногда приходилось обновлять кэш, поскольку имя пользователя изменялось в базе данных. Если у нас был метод обновления интерфейса MBean, то мы могли бы вызвать это событие с помощью консоли JMX. Консоль JMX может быть веб-клиентом или толстым клиентом, который поставляется с нашим сервером J2EE. Наш J2EE-сервер также может поддерживать SNMP. Это означает, что мы можем вызвать метод из стандартной консоли Tivoli или UniCenter.
http://www.theserverside.com/news/1364664/J2EE-Application-Management-The-Power-of-JMX
Вам не нужен удаленный доступ к ServiceMBean, чтобы вызвать какое-то асинхронное действие. Более того, вам нужна проверка области применения, а не всей JVM (хотя теоретически вы можете решить эту проблему в ServiceMBean). Поэтому более естественно сделать это как тег сервлета загрузки при запуске в web.xml. Таким образом, при каждом запуске вашего приложения будет происходить проверка.
Еще одно уточнение: ServiceMBean - это JBoss-way для написания JMX. Все MBean-компоненты являются серверными (не прикладными). Вот почему я свободно использую MBean и ServiceMBean.