You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2021/03/03 13:39:15 UTC

[camel] branch master updated: CAMEL-16296: camel-as2 - Should stop server connections when shutdown.

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

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


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

commit 5bd247b6d34c0fe3b1a77f7aef27d9f72f39e863
Author: Claus Ibsen <cl...@gmail.com>
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();
+    }
 }