【问题标题】:How to expose a Stateless EJB method as MBean (on Jboss)?如何将无状态 EJB 方法公开为 MBean(在 Jboss 上)?
【发布时间】:2010-02-08 12:44:58
【问题描述】:

我有一个使用内部缓存的无状态 EJB (3),它每 24 小时自动刷新一次。我想公开一个 MBean 方法,以便能够通过 Jboss 4.2 上的 JMX 控制台强制缓存过期甚至在此 EJB 上重新加载缓存。

有人可以分享一个关于如何编写这个场景的例子吗?在创建自己的 bean 时,我对 JMX 完全陌生。

我应该创建一个调用我的 EJB 的 MBean,还是可以通过在 EJB 本身上使用注释将特定的 EJB 方法公开为 Mbean 接口?

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
    }

    ...

}

【问题讨论】:

    标签: java ejb-3.0 jmx


    【解决方案1】:

    更新:

    这肯定适用于 WildFly 10+、jBOSS EAP 6.x 或 7.x。但我怀疑这些机制不再是专有的,并且在其他应用服务器中的工作方式非常相似。

    当 JavaEE 6 标准化 Singletons 时,JBoss 特定的注解 @Service / @Management 被移除。 MBean(始终是单例,以便所有 JMX 客户端在应用程序范围内看到相同的一致 JMX 数据)变为通过 JMX 公开的 EE6+ 单例,如下所示:

    • 定义一个名称以“...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”接口中定义的 getter/setter 成为 JMX 属性,其他方法映射到“词法设计模式”下​​JMX Specifications 中指定的操作

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 您提供的链接是关于 MDB 而不是 JMX MBeans。但是我在浏览 JBoss 站点时发现了这一点:jboss.org/ejb3/docs/reference/build/reference/en/html/… 我可能会使用 @Service,尽管它是架构更改并通过使用 JBoss 类而不是标准 JMX 引入了供应商锁定。
      • @Michal,很高兴你找到了一些可以帮助你前进的东西,即使我帮不了你太多:-)
      猜你喜欢
      • 1970-01-01
      • 2015-03-10
      • 1970-01-01
      • 2014-10-26
      • 2019-04-30
      • 2013-06-20
      • 1970-01-01
      • 1970-01-01
      • 2014-06-25
      相关资源
      最近更新 更多