2010-11-01 101 views
4

我編寫了一個在Glassfish的Web服務中運行的JMS應用程序(也部署在JBoss中),我注意到在我通過MessageListener MDP處理幾條消息之後,JMS服務器的連接斷開!默認彈簧JmsTemplate關閉連接嗎?

既阿帕奇的ActiveMQ和Glassfish內部JMS經紀人試了一下(openMQ?)

有沒有一種方法來檢查爲什麼發生這種情況?如果這是JmsTemplate的默認行爲,那麼我的替代方法是以正確的方式開發JMS生產者和消費者?

謝謝!

+1

也許你問不同的問題相同的問題(http://stackoverflow.com/questions/4046840/spring-jmstemplate-and-apache-activemq-why-so-many-connections)? – Raghuram 2010-11-02 05:31:07

+0

是的,在調查之後,我認爲它首先是一個ActiveMQ問題。 – wsb3383 2010-11-02 16:58:17

回答

1

是的,連接關閉。執行方法的See the code

JmsUtils.closeSession(sessionToClose); 
ConnectionFactoryUtils.releaseConnection(
    conToClose, getConnectionFactory(), startConnection); 
+3

那麼爲什麼連接在JMS服務器上保持打開狀態? – wsb3383 2010-11-02 16:57:54

2

彈簧JmsTemplate的將關閉,創建所有資源(連接,消費者,生產者..)每次接收或發送消息的時間。 如果您不使用池中的連接,會話,消費者....這將是一個巨大的性能瓶頸。

說了這樣的話,是的,JMSTemplate應該每次關閉連接。