Как выставить EJB-метод без сохранения состояния как MBean (на Jboss)? - PullRequest
1 голос
/ 08 февраля 2010

У меня есть EJB без сохранения состояния (3), который использует внутренний кеш, который обновляется автоматически каждые 24 часа. Я хотел бы предоставить метод MBean, чтобы можно было принудительно истечь срок действия кеша или даже перезагрузить кеш на этом EJB через консоль JMX на Jboss 4.2.

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

Должен ли я создать MBean, который вызывает мой EJB, или можно представить конкретный метод EJB как интерфейс Mbean с помощью аннотации на самом EJB?

EJB выглядит так:

@Stateless
@Local(BusinessCalendar.class)
public class BusinessCalendarBean implements BusinessCalendar {

    synchronized private LocalDateKitCalculatorsFactory getCalculatorFactory() {

        LocalDateKitCalculatorsFactory ldkc = (LocalDateKitCalculatorsFactory) CacheService.get(CACHE_KEY);

        if (ldkc == null) {
            ldkc = getCalculatorFactory();
            CacheService.put(CACHE_KEY, ldkc);
        }

        return ldkc;

    }

    public function expireCache() {
         // I would like to expose this as JMX managed method
    }

    ...

}

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

Обновление:

Это, безусловно, действительно для WildFly 10+, jBOSS EAP 6.x или 7.x. Но я подозреваю, что механизмы больше не являются проприетарными и будут работать аналогично на других серверах приложений.

Специальные аннотации JBoss @Service / @Management были удалены, когда JavaEE 6 стандартизировал Singletons. MBean (всегда одноэлементный, так что все клиенты JMX видят одну и ту же непротиворечивую единицу данных JMX) становится EE6 + Singleton, предоставляемым через JMX следующим образом:

  • определить интерфейс с именем, оканчивающимся на "... MXBean" (обязательно)
  • создайте классы @Singleton и @Startup, которые реализуют этот интерфейс
  • определить методы @PostConstruct и @PreDestroy для регистрации / отмены регистрации MBean

код регистрации / отмены регистрации подобен:

objectName = new javax.management.ObjectName("com.acme.example.jmx:type=" + this.getClass().getName());
platformMBeanServer = java.lang.management.ManagementFactory.getPlatformMBeanServer();
platformMBeanServer.registerMBean(this, objectName);

Методы получения / установки, определенные в вашем интерфейсе "... MXBean", становятся атрибутами JMX, другие методы отображаются на операции, как указано в Спецификациях JMX в разделе "шаблоны лексического проектирования"

0 голосов
/ 08 февраля 2010

Вы уже смотрели онлайн-руководство по настройке JBoss? Это может помочь http://www.redhat.com/docs/en-US/JBoss_Enterprise_Application_Platform/4.2.0.cp08/html/Server_Configuration_Guide/EJB3_Services-Message_Driven_Beans.html

...