2010-11-01 15 views
4

J'ai écrit une application JMS qui s'exécute dans un service Web dans Glassfish (également déployé dans JBoss), j'ai remarqué qu'après avoir traité plusieurs messages via un MDP MessageListener, le serveur JMS manque de connexions!Est-ce que Spring JmsTemplate ferme les connexions par défaut?

Essayé avec les deux Apache ActiveMQ et courtier JMS interne Glassfish (OpenMQ?)

Y at-il un moyen de vérifier pourquoi cela se passe? Si c'est le comportement par défaut de JmsTemplate, quelle est ma solution pour développer les producteurs JMS et les consommateurs de la bonne façon?

Merci!

+1

Peut-être que vous posez la même question (http://stackoverflow.com/questions/4046840/spring-jmstemplate-and-apache-activemq-why-so-many-connections) différemment? – Raghuram

+0

Oui, après enquête, je pensais que c'était un problème ActiveMQ en premier. – wsb3383

Répondre

1

Oui, la connexion est fermée. See the code de la méthode d'exécution:

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

Alors pourquoi les connexions restent-elles ouvertes sur le serveur JMS? – wsb3383

2

Le printemps JMSTemplate se ferme et créer toutes les ressources (Connexions, consommateurs, producteurs ..) chaque fois qu'il reçoit ou envoie un message. Ce sera un énorme goulot d'étranglement au niveau des performances si vous n'utilisez pas les connexions groupées, les sessions, les consommateurs .... Cela dit, oui, le JMSTemplate doit fermer votre connexion à chaque fois.