From d8a26725050df3254e3ecc75832641714b414390 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Fri, 2 Feb 2018 11:33:10 +0100 Subject: [PATCH] CachingConnectionFactory makes its Session caching inactive during reset Issue: SPR-16450 (cherry picked from commit b6ecfcf) --- .../jms/connection/CachingConnectionFactory.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/spring-jms/src/main/java/org/springframework/jms/connection/CachingConnectionFactory.java b/spring-jms/src/main/java/org/springframework/jms/connection/CachingConnectionFactory.java index 4c207f12e7b..ffccdc87e3d 100644 --- a/spring-jms/src/main/java/org/springframework/jms/connection/CachingConnectionFactory.java +++ b/spring-jms/src/main/java/org/springframework/jms/connection/CachingConnectionFactory.java @@ -186,6 +186,7 @@ public class CachingConnectionFactory extends SingleConnectionFactory { @Override public void resetConnection() { this.active = false; + synchronized (this.cachedSessions) { for (LinkedList sessionList : this.cachedSessions.values()) { synchronized (sessionList) { @@ -201,10 +202,11 @@ public class CachingConnectionFactory extends SingleConnectionFactory { } this.cachedSessions.clear(); } - this.active = true; // Now proceed with actual closing of the shared Connection... super.resetConnection(); + + this.active = true; } /** @@ -212,6 +214,10 @@ public class CachingConnectionFactory extends SingleConnectionFactory { */ @Override protected Session getSession(Connection con, Integer mode) throws JMSException { + if (!this.active) { + return null; + } + LinkedList sessionList; synchronized (this.cachedSessions) { sessionList = this.cachedSessions.get(mode);