[英]How to expose a Stateless EJB method as MBean (on Jboss)?
我有一个使用内部缓存的无状态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
}
...
}
更新:
这对于WildFly 10 +,jBOSS EAP 6.x或7.x肯定有效。 但是我怀疑这些机制不再是专有的,并且在其他应用服务器中也将非常相似地工作。
当JavaEE 6标准化Singletons时,已删除JBoss特定的注释@Service / @Management。 MBean(始终为单例,以便所有JMX客户端在应用程序范围内都能看到相同的一致JMX数据)成为通过JMX公开的EE6 +单例,如下所示:
注册/注销代码如下:
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规范中 “词法设计模式”下指定的操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.