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

davsclaus pushed a commit to branch camel-3.7.x
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/camel-3.7.x by this push:
     new 31cba8a  CAMEL-16296: camel-as2 - Should stop server connections when 
shutdown.
31cba8a is described below

commit 31cba8ada5fcaef8d8761b810be5a828b58ff24a
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed Mar 3 14:37:39 2021 +0100

    CAMEL-16296: camel-as2 - Should stop server connections when shutdown.
---
 .../apache/camel/component/as2/AS2Component.java   |  8 ++++++++
 .../as2/internal/AS2ConnectionHelper.java          | 23 ++++++++++++++++++++++
 2 files changed, 31 insertions(+)

diff --git 
a/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Component.java
 
b/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Component.java
index 7d21869..d3adc38 100644
--- 
a/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Component.java
+++ 
b/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/AS2Component.java
@@ -22,6 +22,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.as2.internal.AS2ApiCollection;
 import org.apache.camel.component.as2.internal.AS2ApiName;
+import org.apache.camel.component.as2.internal.AS2ConnectionHelper;
 import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.component.AbstractApiComponent;
 import org.bouncycastle.jce.provider.BouncyCastleProvider;
@@ -64,4 +65,11 @@ public class AS2Component extends 
AbstractApiComponent<AS2ApiName, AS2Configurat
         }
     }
 
+    @Override
+    protected void doShutdown() throws Exception {
+        super.doShutdown();
+
+        // stop all server connectors as they would no longer be in use
+        AS2ConnectionHelper.closeAllServerConnections();
+    }
 }
diff --git 
a/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/internal/AS2ConnectionHelper.java
 
b/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/internal/AS2ConnectionHelper.java
index 31a956a..153a12a 100644
--- 
a/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/internal/AS2ConnectionHelper.java
+++ 
b/components/camel-as2/camel-as2-component/src/main/java/org/apache/camel/component/as2/internal/AS2ConnectionHelper.java
@@ -24,12 +24,16 @@ import java.util.Map;
 import org.apache.camel.component.as2.AS2Configuration;
 import org.apache.camel.component.as2.api.AS2ClientConnection;
 import org.apache.camel.component.as2.api.AS2ServerConnection;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Utility class for creating AS2 connections.
  */
 public final class AS2ConnectionHelper {
 
+    private static final Logger LOG = 
LoggerFactory.getLogger(AS2ConnectionHelper.class);
+
     private static Map<Integer, AS2ServerConnection> serverConnections = new 
HashMap<>();
 
     /**
@@ -74,4 +78,23 @@ public final class AS2ConnectionHelper {
             return serverConnection;
         }
     }
+
+    public static void closeAllServerConnections() {
+        synchronized (serverConnections) {
+            for (Map.Entry<Integer, AS2ServerConnection> entry : 
serverConnections.entrySet()) {
+                try {
+                    int port = entry.getKey();
+                    LOG.debug("Stopping and closing AS2ServerConnection on 
port: {}", port);
+                    AS2ServerConnection conn = entry.getValue();
+                    conn.close();
+                } catch (Exception e) {
+                    // ignore
+                    LOG.debug("Error stopping and closing AS2ServerConnection 
due to " + e.getMessage()
+                              + ". This exception is ignored",
+                            e);
+                }
+            }
+        }
+        serverConnections.clear();
+    }
 }

Reply via email to