Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Does Spring JmsTemplate close connections by default?

I wrote a JMS application that runs within a web service in Glassfish (also deployed it in JBoss), I noticed that after I process several messages through a MessageListener MDP, the JMS server runs out of connections!

Tried it with both Apache ActiveMQ and Glassfish internal JMS broker (openMQ?)

Is there a way to check why this is happening? If this is the default behavior of JmsTemplate, what is my alternative for developing JMS producers and consumers the right way?

Thanks!

like image 477
wsb3383 Avatar asked Nov 01 '10 23:11

wsb3383


2 Answers

The spring JMSTemplate will close and create all resources (Connections, Consumers, Producers ..) each time it receives or sends a message. This will be a huge performance bottleneck if you are not using pooled Connections, Sessions, Consumers .... .

Having said that, yes the JMSTemplate should close your connection each time.

like image 134
Oliver Avatar answered Nov 09 '22 22:11

Oliver


Yes, the connection gets closed. See the code of the execute method:

JmsUtils.closeSession(sessionToClose);
ConnectionFactoryUtils.releaseConnection(
    conToClose, getConnectionFactory(), startConnection);
like image 36
Bozho Avatar answered Nov 09 '22 22:11

Bozho