2
我有許多在Glassfish 3.1.2.2上運行的MDBs。 由於其中一個MDB的工作性質,我需要使其成爲單線程。我查看了Tuning Guide,並將最大池大小設置爲1確實解決了問題,這也意味着所有其他MDB都是單線程的。我真正想要做的是讓特定的MDB成爲單線程,而讓其他人成爲多線程。Glassfish上的單線程MDB
我有許多在Glassfish 3.1.2.2上運行的MDBs。 由於其中一個MDB的工作性質,我需要使其成爲單線程。我查看了Tuning Guide,並將最大池大小設置爲1確實解決了問題,這也意味着所有其他MDB都是單線程的。我真正想要做的是讓特定的MDB成爲單線程,而讓其他人成爲多線程。Glassfish上的單線程MDB
這很容易通過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說什麼。這樣你可以輕鬆地微調系統設置。
賓果,正是我需要的。謝謝 – M21B8
但請注意:如果當前池的大小超過max-pool-size,則設置一個小的「max-pool-size」會導致過多的對象破壞(並導致過多的對象創建) '._ [performance-tuning-guide](https://glassfish.java.net/docs/4.0/performance-tuning-guide.pdf) – dedek
@dedek是的我認爲我也看到了mdb的展示行爲,但爲了得到OP想要的行爲(連續處理消息),將max-pool-size設置爲1是唯一的想法,你可以這樣做...... – fvu