Repository: cxf
Updated Branches:
  refs/heads/master f6ce97d4d -> a93f0d9ad


[CXF-6778] Also cache and compare session to avoid stale Destination


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/a93f0d9a
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/a93f0d9a
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/a93f0d9a

Branch: refs/heads/master
Commit: a93f0d9ad891865cc635a961cb890c2031177e5b
Parents: f6ce97d
Author: Christian Schneider <[email protected]>
Authored: Tue Mar 14 12:10:58 2017 +0100
Committer: Christian Schneider <[email protected]>
Committed: Tue Mar 14 12:10:58 2017 +0100

----------------------------------------------------------------------
 .../cxf/transport/jms/JMSConfiguration.java     | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/a93f0d9a/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfiguration.java
----------------------------------------------------------------------
diff --git 
a/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfiguration.java
 
b/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfiguration.java
index e8fba27..4b1052d 100644
--- 
a/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfiguration.java
+++ 
b/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConfiguration.java
@@ -78,6 +78,12 @@ public class JMSConfiguration {
      */
     private String replyToDestination;
     private volatile Destination replyToDestinationDest;
+    
+    /**
+     * Session that was used to cache the replyToDestinationDest
+     */
+    private volatile Session replyDestinationSession;
+    
     private String messageType = JMSConstants.TEXT_MESSAGE_TYPE;
     private boolean pubSubDomain;
     private boolean replyPubSubDomain;
@@ -97,8 +103,6 @@ public class JMSConfiguration {
     private String targetService;
     private String requestURI;
 
-
-
     public void ensureProperlyConfigured() {
         ConnectionFactory cf = getConnectionFactory();
         if (cf == null) {
@@ -464,19 +468,17 @@ public class JMSConfiguration {
     }
 
     public Destination getReplyDestination(Session session) throws 
JMSException {
-        Destination result = replyDestinationDest;
-        if (result == null) {
+        if (this.replyDestinationDest == null || this.replyDestinationSession 
== null) {
             synchronized (this) {
-                result = replyDestinationDest;
-                if (result == null) {
-                    result = replyDestination == null
+                if (this.replyDestinationDest == null || 
this.replyDestinationSession == null) {
+                    this.replyDestinationDest = replyDestination == null
                         ? session.createTemporaryQueue()
                         : destinationResolver.resolveDestinationName(session, 
replyDestination, replyPubSubDomain);
-                    replyDestinationDest = result;
+                    this.replyDestinationSession = session;
                 }
             }
         }
-        return result;
+        return this.replyDestinationDest;
     }
 
     public Destination getTargetDestination(Session session) throws 
JMSException {

Reply via email to