2

我有許多在Glassfish 3.1.2.2上運行的MDBs。 由於其中一個MDB的工作性質,我需要使其成爲單線程。我查看了Tuning Guide,並將最大池大小設置爲1確實解決了問題,這也意味着所有其他MDB都是單線程的。我真正想要做的是讓特定的MDB成爲單線程,而讓其他人成爲多線程。Glassfish上的單線程MDB

回答

2

這很容易通過glassfish-ejb-jar.xml部署描述符來實現:

<glassfish-ejb-jar> 
    <enterprise-beans> 
    <ejb> 
     <ejb-name>YourMDB</ejb-name> 
     <bean-pool> 
     <resize-quantity>1</resize-quantity> 
     <max-pool-size>1</max-pool-size> 
     <steady-pool-size>1</steady-pool-size> 
     </bean-pool> 
    </ejb> 
    </enterprise-beans> 
</glassfish-ejb-jar> 

以上部分將限制加工豆嚴格的數量-1,無論全球poolsize說什麼。這樣你可以輕鬆地微調系統設置。

+0

賓果,正是我需要的。謝謝 – M21B8

+0

但請注意:如果當前池的大小超過max-pool-size,則設置一個小的「max-pool-size」會導致過多的對象破壞(並導致過多的對象創建) '._ [performance-tuning-guide](https://glassfish.java.net/docs/4.0/performance-tuning-guide.pdf) – dedek

+0

@dedek是的我認爲我也看到了mdb的展示行爲,但爲了得到OP想要的行爲(連續處理消息),將max-pool-size設置爲1是唯一的想法,你可以這樣做...... – fvu