You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by re...@apache.org on 2021/09/02 14:39:08 UTC

[cxf] branch master updated: Delete temporary queue when it is used (#826)

This is an automated email from the ASF dual-hosted git repository.

reta pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf.git


The following commit(s) were added to refs/heads/master by this push:
     new ce10808  Delete temporary queue when it is used (#826)
ce10808 is described below

commit ce10808c887f6715e4126479cf942c485d02dc7a
Author: valentin-matignon <87...@users.noreply.github.com>
AuthorDate: Thu Sep 2 16:38:59 2021 +0200

    Delete temporary queue when it is used (#826)
    
    * Delete temporary queue when it is used
    
    * Delete temporary queues in JMSConfiguration
    
    * handle JMSException directly in resetCachedReplyDestination method
    
    * Call JMSConfiguration.resetCachedReplyDestination() after shutdownListeners()
    
    * Call JMSConfiguration.resetCachedReplyDestination() before ResourceCloser.close(...)
    
    * Checkstyle correction
---
 .../main/java/org/apache/cxf/transport/jms/JMSConduit.java  |  5 +++--
 .../java/org/apache/cxf/transport/jms/JMSConfiguration.java | 13 +++++++++++++
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java b/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java
index abc9650..030ce3e 100644
--- a/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java
+++ b/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java
@@ -127,7 +127,7 @@ public class JMSConduit extends AbstractConduit implements JMSExchangeSender, Me
     private void trySetExListener(Connection conn) {
         try {
             conn.setExceptionListener(new ExceptionListener() {
-                
+
                 @Override
                 public void onException(JMSException exception) {
                     jmsConfig.resetCachedReplyDestination();
@@ -186,9 +186,9 @@ public class JMSConduit extends AbstractConduit implements JMSExchangeSender, Me
                 if (exchange.get(JMSUtil.JMS_MESSAGE_CONSUMER) != null) {
                     ResourceCloser.close(exchange.get(JMSUtil.JMS_MESSAGE_CONSUMER));
                 }
+                jmsConfig.resetCachedReplyDestination();
                 ResourceCloser.close(connection);
                 this.connection = null;
-                jmsConfig.resetCachedReplyDestination();
             }
             this.staticReplyDestination = null;
             try {
@@ -511,6 +511,7 @@ public class JMSConduit extends AbstractConduit implements JMSExchangeSender, Me
     }
     public synchronized void close() {
         shutdownListeners();
+        jmsConfig.resetCachedReplyDestination();
         ResourceCloser.close(connection);
         connection = null;
         LOG.log(Level.FINE, "JMSConduit closed ");
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 a1034ba..44e7477 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
@@ -19,16 +19,20 @@
 package org.apache.cxf.transport.jms;
 
 import java.util.Properties;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 import javax.jms.ConnectionFactory;
 import javax.jms.Destination;
 import javax.jms.JMSException;
 import javax.jms.Message;
 import javax.jms.Session;
+import javax.jms.TemporaryQueue;
 import javax.naming.NamingException;
 import javax.transaction.TransactionManager;
 
 import org.apache.cxf.common.injection.NoJSR250Annotations;
+import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.transport.jms.util.DestinationResolver;
 import org.apache.cxf.transport.jms.util.JMSDestinationResolver;
 import org.apache.cxf.transport.jms.util.JndiHelper;
@@ -40,6 +44,8 @@ public class JMSConfiguration {
      */
     public static final int DEFAULT_VALUE = -1;
 
+    private static final Logger LOG = LogUtils.getL7dLogger(JMSConfiguration.class);
+
     private volatile ConnectionFactory connectionFactory;
     private Properties jndiEnvironment;
     private String connectionFactoryName;
@@ -489,6 +495,13 @@ public class JMSConfiguration {
 
     public void resetCachedReplyDestination() {
         synchronized (this) {
+            if (replyDestinationDest instanceof TemporaryQueue) {
+                try {
+                    ((TemporaryQueue) replyDestinationDest).delete();
+                } catch (JMSException exception) {
+                    LOG.log(Level.WARNING, "Exception on temporary queue deletion", exception);
+                }
+            }
             this.replyDestinationDest = null;
         }
     }