2011-11-21 65 views
1

我已經在JBoss中部署了一個應用程序,它使用JBoss JMS實現部署了多個MDB,每個MDB都使用不同的MDB池大小配置。我期待着某種機制,我們可以在每個MDB池大小上都有一個偵聽器,我們可以檢查MDB池中的所有實例是否正在使用。這將有助於分析和配置每個MDB的適當的MDB池大小。在JBoss JMS中實現MDB池監聽器

回答

1

我們使用Jamon監測多邊開發銀行的情況下,像這樣:

@MessageDriven 
@TransactionManagement(value = TransactionManagementType.CONTAINER) 
@TransactionAttribute(value = TransactionAttributeType.REQUIRED) 
@ResourceAdapter("wmq.jmsra.rar") 
@AspectDomain("YourDomainName") 
public class YourMessageDrivenBean implements MessageListener 
{ 
    // jamon package constant 
    protected static final String WB_ONMESSAGE = "wb.onMessage"; 

    // instance counter 
    private static AtomicInteger counter = new AtomicInteger(0); 
    private int instanceIdentifier = 0; 

    @Resource 
    MessageDrivenContext ctx; 

    @Override 
    public void onMessage(Message message) 
    { 
     final Monitor monall = MonitorFactory.start(WB_ONMESSAGE); 
     final Monitor mon = MonitorFactory.start(WB_ONMESSAGE + "." + toString() 
       + "; mdb instance identifier=" + instanceIdentifier); 

     try { 
// process your message here 
      } 

     } catch (final Exception x) { 
      log.error("Error onMessage " + x.getMessage(), x); 
      ctx.setRollbackOnly(); 
     } finally { 
      monall.stop(); 
      mon.stop(); 
     } 

    } 

    @PostConstruct 
    public void init() 
    { 
     instanceIdentifier = counter.incrementAndGet(); 
     log.debug("constructed instance #" + instanceIdentifier); 
    } 
} 

然後,您可以在火腿監視器看到你的MDB的每一個創建的實例。