2010-02-08 83 views
0

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

有人可以分享一个关于如何编写这个场景的例子吗?当谈到创建我自己的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 
    } 

    ... 

} 

回答

0
+0

您提供的链接是关于MDB而不是JMX MBean。但是我在浏览JBoss站点时发现这个: http://www.jboss.org/ejb3/docs/reference/build/reference/en/html/jboss_extensions.html 我可能会使用@Service,尽管它是架构性的改变并通过使用JBoss类而不是标准的JMX引入了供应商锁定。 – 2010-02-08 15:03:38

+0

@Michal, 很高兴你发现了一些可以帮助你前进的东西,即使我无法帮助你:-) – 2010-02-08 17:08:01