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

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


The following commit(s) were added to refs/heads/main by this push:
     new ce08755cf621 CAMEL-23214: Migrate AvailablePortFinder in camel-as2 
tests (#22122)
ce08755cf621 is described below

commit ce08755cf62177458a226ec4361aa65208e9414f
Author: Guillaume Nodet <[email protected]>
AuthorDate: Fri Mar 20 09:12:53 2026 +0100

    CAMEL-23214: Migrate AvailablePortFinder in camel-as2 tests (#22122)
    
    * CAMEL-23214: Migrate AvailablePortFinder in camel-as2 tests
    
    Co-Authored-By: Claude Opus 4.6 <[email protected]>
    
    * CAMEL-23214: Remove unrelated AS2 ServerSocket changes from port 
migration PR
    
    Co-Authored-By: Claude Opus 4.6 <[email protected]>
    
    * CAMEL-23214: Fix port migration in camel-as2 tests
    
    Co-Authored-By: Claude Opus 4.6 <[email protected]>
    
    * CAMEL-23214: Use setupResources/cleanupResources for AS2 server startup
    
    The AS2 server must start before the CamelContext (and routes) start,
    because the AS2 client endpoint tries to connect during route startup.
    doPostSetup() runs after context start, causing "Client HTTP connection
    failed". setupResources() runs before context creation, fixing the race.
    
    Co-Authored-By: Claude Opus 4.6 <[email protected]>
    
    ---------
    
    Co-authored-by: Claude Opus 4.6 <[email protected]>
---
 .../as2/api/AS2AsyncMDNServerConnectionTest.java   | 10 ++--
 .../camel/component/as2/api/AS2MessageTest.java    |  2 +-
 .../component/as2/api/AS2MessageTestBase.java      | 12 +++--
 .../as2/api/AS2UnencryptedMessageTest.java         |  2 +-
 .../component/as2/AS2AsyncMDNServerManagerIT.java  | 58 ++++++++++++----------
 .../as2/AS2AsyncMdnBasicAuthHeaderTest.java        | 36 +++++++-------
 .../as2/AS2AsyncMdnTokenAuthHeaderTest.java        | 29 +++++------
 .../component/as2/AS2BasicAuthHeaderTest.java      | 24 ++++-----
 .../camel/component/as2/AS2ClientManagerIT.java    | 34 +++++++------
 .../as2/AS2ServerBasicAuthHeaderTest.java          | 15 +++---
 .../as2/AS2ServerBearerAuthHeaderTest.java         | 15 +++---
 .../component/as2/AS2ServerManagerEncryptedIT.java |  6 +--
 .../camel/component/as2/AS2ServerManagerIT.java    | 14 +++---
 .../component/as2/AS2ServerManagerITBase.java      |  8 +--
 .../camel/component/as2/AS2ServerSecTestBase.java  |  8 +--
 .../component/as2/AS2TokenAuthHeaderTest.java      | 24 ++++-----
 16 files changed, 161 insertions(+), 136 deletions(-)

diff --git 
a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2AsyncMDNServerConnectionTest.java
 
b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2AsyncMDNServerConnectionTest.java
index 1314f648f3d6..b8b7bbd1b9b4 100644
--- 
a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2AsyncMDNServerConnectionTest.java
+++ 
b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2AsyncMDNServerConnectionTest.java
@@ -28,18 +28,19 @@ import org.apache.hc.core5.http.protocol.HttpContext;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.*;
 
 class AS2AsyncMDNServerConnectionTest {
 
-    private int port;
+    @RegisterExtension
+    AvailablePortFinder.Port port = AvailablePortFinder.find();
     private AS2AsyncMDNServerConnection connection;
 
     @BeforeEach
     void setUp() throws Exception {
-        port = AvailablePortFinder.getNextAvailable();
-        connection = new AS2AsyncMDNServerConnection(port, null);
+        connection = new AS2AsyncMDNServerConnection(port.getPort(), null);
     }
 
     @AfterEach
@@ -67,7 +68,8 @@ class AS2AsyncMDNServerConnectionTest {
 
         // Send a request with a Host header that doesn't match the server's 
hostname
         // This previously caused HTTP 421 due to RequestValidateHost
-        HttpURLConnection conn = (HttpURLConnection) new 
URL("http://localhost:"; + port + "/test-mdn").openConnection();
+        HttpURLConnection conn
+                = (HttpURLConnection) new URL("http://localhost:"; + 
port.getPort() + "/test-mdn").openConnection();
         conn.setRequestMethod("POST");
         conn.setRequestProperty("Host", "different-host.example.com");
         conn.setDoOutput(true);
diff --git 
a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTest.java
 
b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTest.java
index 535843106e59..4d4d80c56f33 100644
--- 
a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTest.java
+++ 
b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTest.java
@@ -85,7 +85,7 @@ public class AS2MessageTest extends AS2MessageTestBase {
         setupKeysAndCertificates();
 
         testServer = new AS2ServerConnection(
-                AS2_VERSION, "MyServer-HTTP/1.1", SERVER_FQDN, TARGET_PORT, 
AS2SignatureAlgorithm.SHA256WITHRSA,
+                AS2_VERSION, "MyServer-HTTP/1.1", SERVER_FQDN, 
TARGET_PORT.getPort(), AS2SignatureAlgorithm.SHA256WITHRSA,
                 certList.toArray(new Certificate[0]), signingKP.getPrivate(), 
decryptingKP.getPrivate(), MDN_MESSAGE_TEMPLATE,
                 VALIDATE_SIGNING_CERTIFICATE_CHAIN, null, null, null, null);
         testServer.listen("*", new HttpRequestHandler() {
diff --git 
a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTestBase.java
 
b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTestBase.java
index 91fb6bb46914..c61beded20bc 100644
--- 
a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTestBase.java
+++ 
b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2MessageTestBase.java
@@ -48,6 +48,7 @@ import org.apache.hc.core5.http.protocol.HttpDateGenerator;
 import org.bouncycastle.jce.provider.BouncyCastleProvider;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -85,13 +86,14 @@ public class AS2MessageTestBase {
 
     protected static final String METHOD = "POST";
     protected static final String TARGET_HOST = "localhost";
-    protected static final int TARGET_PORT = 
AvailablePortFinder.getNextAvailable();
+    @RegisterExtension
+    protected static AvailablePortFinder.Port TARGET_PORT = 
AvailablePortFinder.find();
     protected static final Duration HTTP_SOCKET_TIMEOUT = 
Duration.ofSeconds(5);
     protected static final Duration HTTP_CONNECTION_TIMEOUT = 
Duration.ofSeconds(5);
     protected static final Integer HTTP_CONNECTION_POOL_SIZE = 5;
     protected static final Duration HTTP_CONNECTION_POOL_TTL = 
Duration.ofMinutes(15);
     protected static final Certificate[] VALIDATE_SIGNING_CERTIFICATE_CHAIN = 
null;
-    protected static final String RECIPIENT_DELIVERY_ADDRESS = 
"http://localhost:"; + TARGET_PORT + "/handle-receipts";
+    protected static final String RECIPIENT_DELIVERY_ADDRESS = 
"http://localhost:"; + TARGET_PORT.getPort() + "/handle-receipts";
     protected static final String AS2_VERSION = "1.1";
     protected static final String USER_AGENT = "Camel AS2 Endpoint";
     protected static final String REQUEST_URI = "/";
@@ -172,7 +174,7 @@ public class AS2MessageTestBase {
         aSettings.setSenderData(AS2_NAME, FROM, "openas2a_alias");
 
         // Fixed receiver
-        aSettings.setReceiverData(AS2_NAME, "openas2b_alias", "http://"; + 
TARGET_HOST + ":" + TARGET_PORT + "/");
+        aSettings.setReceiverData(AS2_NAME, "openas2b_alias", "http://"; + 
TARGET_HOST + ":" + TARGET_PORT.getPort() + "/");
         aSettings.setReceiverCertificate(issueCert);
 
         // AS2 stuff
@@ -218,7 +220,7 @@ public class AS2MessageTestBase {
         aSettings.setSenderData(AS2_NAME, FROM, "openas2a_alias");
 
         // Fixed receiver
-        aSettings.setReceiverData(AS2_NAME, "openas2b_alias", "http://"; + 
TARGET_HOST + ":" + TARGET_PORT + "/");
+        aSettings.setReceiverData(AS2_NAME, "openas2b_alias", "http://"; + 
TARGET_HOST + ":" + TARGET_PORT.getPort() + "/");
         aSettings.setReceiverCertificate(issueCert);
 
         // AS2 stuff
@@ -253,7 +255,7 @@ public class AS2MessageTestBase {
     protected AS2ClientManager createDefaultClientManager() throws IOException 
{
         AS2ClientConnection clientConnection = new AS2ClientConnection(
                 AS2_VERSION, USER_AGENT, CLIENT_FQDN,
-                TARGET_HOST, TARGET_PORT, HTTP_SOCKET_TIMEOUT, 
HTTP_CONNECTION_TIMEOUT, HTTP_CONNECTION_POOL_SIZE,
+                TARGET_HOST, TARGET_PORT.getPort(), HTTP_SOCKET_TIMEOUT, 
HTTP_CONNECTION_TIMEOUT, HTTP_CONNECTION_POOL_SIZE,
                 HTTP_CONNECTION_POOL_TTL, null, null);
         return new AS2ClientManager(clientConnection);
     }
diff --git 
a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2UnencryptedMessageTest.java
 
b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2UnencryptedMessageTest.java
index 60684d004159..544d8cea97c5 100644
--- 
a/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2UnencryptedMessageTest.java
+++ 
b/components/camel-as2/camel-as2-api/src/test/java/org/apache/camel/component/as2/api/AS2UnencryptedMessageTest.java
@@ -60,7 +60,7 @@ public class AS2UnencryptedMessageTest extends 
AS2MessageTestBase {
         setupKeysAndCertificates();
 
         testServer = new AS2ServerConnection(
-                AS2_VERSION, "MyServer-HTTP/1.1", SERVER_FQDN, TARGET_PORT, 
AS2SignatureAlgorithm.SHA256WITHRSA,
+                AS2_VERSION, "MyServer-HTTP/1.1", SERVER_FQDN, 
TARGET_PORT.getPort(), AS2SignatureAlgorithm.SHA256WITHRSA,
                 certList.toArray(new Certificate[0]), signingKP.getPrivate(), 
null, MDN_MESSAGE_TEMPLATE,
                 null, null, null, null, null);
         testServer.listen("*", new HttpRequestHandler() {
diff --git 
a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2AsyncMDNServerManagerIT.java
 
b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2AsyncMDNServerManagerIT.java
index 63040ab478dc..5c3230153d50 100644
--- 
a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2AsyncMDNServerManagerIT.java
+++ 
b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2AsyncMDNServerManagerIT.java
@@ -56,9 +56,8 @@ import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.io.HttpRequestHandler;
 import org.apache.hc.core5.http.protocol.HttpContext;
 import org.bouncycastle.jce.provider.BouncyCastleProvider;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -110,29 +109,33 @@ public class AS2AsyncMDNServerManagerIT extends 
AbstractAS2ITSupport {
             """;
 
     private static final String EDI_MESSAGE_CONTENT_TRANSFER_ENCODING = "7bit";
-    private static final int PARTNER_TARGET_PORT = 
AvailablePortFinder.getNextAvailable();
-
-    private static final int RECEIPT_SERVER_PORT = 
AvailablePortFinder.getNextAvailable();
-    private static final int RECEIPT_SERVER_PORT2 = 
AvailablePortFinder.getNextAvailable();
-    private static final int RECEIPT_SERVER_PORT3 = 
AvailablePortFinder.getNextAvailable();
-    private static final int RECEIPT_SERVER_PORT4 = 
AvailablePortFinder.getNextAvailable();
-
-    private static AS2ServerConnection serverConnection;
-    private static RequestHandler requestHandler;
+    @RegisterExtension
+    AvailablePortFinder.Port partnerTargetPort = AvailablePortFinder.find();
+    @RegisterExtension
+    AvailablePortFinder.Port receiptServerPort = AvailablePortFinder.find();
+    @RegisterExtension
+    AvailablePortFinder.Port receiptServerPort2 = AvailablePortFinder.find();
+    @RegisterExtension
+    AvailablePortFinder.Port receiptServerPort3 = AvailablePortFinder.find();
+    @RegisterExtension
+    AvailablePortFinder.Port receiptServerPort4 = AvailablePortFinder.find();
+
+    private AS2ServerConnection serverConnection;
+    private RequestHandler requestHandler;
     private static final String SIGNED_RECEIPT_MIC_ALGORITHMS = "sha1,md5";
     private static KeyPair serverKP;
     private static X509Certificate serverCert;
     private static KeyPair clientKeyPair;
     private static X509Certificate clientCert;
 
-    @BeforeAll
-    public static void setupTest() throws Exception {
+    @Override
+    public void setupResources() throws Exception {
         setupKeysAndCertificates();
         receiveTestMessages();
     }
 
-    @AfterAll
-    public static void teardownTest() {
+    @Override
+    public void cleanupResources() {
         if (serverConnection != null) {
             serverConnection.close();
         }
@@ -140,7 +143,7 @@ public class AS2AsyncMDNServerManagerIT extends 
AbstractAS2ITSupport {
 
     @Override
     protected void customizeConfiguration(AS2Configuration configuration) {
-        configuration.setTargetPortNumber(PARTNER_TARGET_PORT);
+        configuration.setTargetPortNumber(partnerTargetPort.getPort());
     }
 
     // Verify the MDN is receipt returned asynchronously from the server when 
the request headers includes the
@@ -148,7 +151,7 @@ public class AS2AsyncMDNServerManagerIT extends 
AbstractAS2ITSupport {
     @Test
     public void deliveryHeaderMultipartReportTest() throws Exception {
         DispositionNotificationMultipartReportEntity reportEntity
-                = executeRequestWithAsyncResponseHeader("direct://SEND", 
RECEIPT_SERVER_PORT, "mock:as2RcvRcptMsgs");
+                = executeRequestWithAsyncResponseHeader("direct://SEND", 
receiptServerPort.getPort(), "mock:as2RcvRcptMsgs");
         verifyMultiPartReportParts(reportEntity);
         verifyMultiPartReportEntity(reportEntity);
     }
@@ -168,7 +171,8 @@ public class AS2AsyncMDNServerManagerIT extends 
AbstractAS2ITSupport {
     @Test
     public void deliveryHeaderMultipartSignedEntityTest() throws Exception {
         MultipartSignedEntity responseSignedEntity
-                = executeRequestWithSignedAsyncResponseHeader("direct://SEND", 
RECEIPT_SERVER_PORT2, "mock:as2RcvRcptMsgs2");
+                = executeRequestWithSignedAsyncResponseHeader("direct://SEND", 
receiptServerPort2.getPort(),
+                        "mock:as2RcvRcptMsgs2");
 
         MimeEntity responseSignedDataEntity = 
responseSignedEntity.getSignedDataEntity();
         assertTrue(responseSignedDataEntity instanceof 
DispositionNotificationMultipartReportEntity,
@@ -390,27 +394,29 @@ public class AS2AsyncMDNServerManagerIT extends 
AbstractAS2ITSupport {
                 // with option for asynchronous receipt specified as path-param
                 from("direct://SEND3")
                         
.toF("as2://client/send?inBody=ediMessage&httpSocketTimeout=5m&httpConnectionTimeout=5m"
-                             + "&receiptDeliveryOption=%s", 
"http://localhost:"; + RECEIPT_SERVER_PORT3 + "/handle-receipts");
+                             + "&receiptDeliveryOption=%s",
+                                "http://localhost:"; + 
receiptServerPort3.getPort() + "/handle-receipts");
 
                 from("direct://SEND4")
                         
.toF("as2://client/send?inBody=ediMessage&httpSocketTimeout=5m&httpConnectionTimeout=5m"
-                             + "&receiptDeliveryOption=%s", 
"http://localhost:"; + RECEIPT_SERVER_PORT4 + "/handle-receipts");
+                             + "&receiptDeliveryOption=%s",
+                                "http://localhost:"; + 
receiptServerPort4.getPort() + "/handle-receipts");
 
                 // asynchronous AS2-MDN (receipt) server instance
                 
fromF("as2://receipt/receive?requestUriPattern=/handle-receipts&asyncMdnPortNumber=%s",
-                        RECEIPT_SERVER_PORT)
+                        receiptServerPort.getPort())
                         .to("mock:as2RcvRcptMsgs");
 
                 
fromF("as2://receipt/receive?requestUriPattern=/handle-receipts&asyncMdnPortNumber=%s",
-                        RECEIPT_SERVER_PORT2)
+                        receiptServerPort2.getPort())
                         .to("mock:as2RcvRcptMsgs2");
 
                 
fromF("as2://receipt/receive?requestUriPattern=/handle-receipts&asyncMdnPortNumber=%s",
-                        RECEIPT_SERVER_PORT3)
+                        receiptServerPort3.getPort())
                         .to("mock:as2RcvRcptMsgs3");
 
                 
fromF("as2://receipt/receive?requestUriPattern=/handle-receipts&asyncMdnPortNumber=%s",
-                        RECEIPT_SERVER_PORT4)
+                        receiptServerPort4.getPort())
                         .to("mock:as2RcvRcptMsgs4");
             }
         };
@@ -438,10 +444,10 @@ public class AS2AsyncMDNServerManagerIT extends 
AbstractAS2ITSupport {
         }
     }
 
-    private static void receiveTestMessages() throws IOException {
+    private void receiveTestMessages() throws IOException {
         serverConnection = new AS2ServerConnection(
                 AS2_VERSION, ORIGIN_SERVER_NAME,
-                SERVER_FQDN, PARTNER_TARGET_PORT, 
AS2SignatureAlgorithm.SHA256WITHRSA,
+                SERVER_FQDN, partnerTargetPort.getPort(), 
AS2SignatureAlgorithm.SHA256WITHRSA,
                 new Certificate[] { serverCert }, serverKP.getPrivate(), null,
                 MDN_MESSAGE_TEMPLATE, new Certificate[] { clientCert }, null, 
null, null, null);
         requestHandler = new RequestHandler();
diff --git 
a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2AsyncMdnBasicAuthHeaderTest.java
 
b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2AsyncMdnBasicAuthHeaderTest.java
index 28311799b012..65039ae96552 100644
--- 
a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2AsyncMdnBasicAuthHeaderTest.java
+++ 
b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2AsyncMdnBasicAuthHeaderTest.java
@@ -35,9 +35,8 @@ import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.http.common.HttpMessage;
 import org.apache.camel.test.AvailablePortFinder;
 import org.apache.hc.core5.http.ContentType;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -53,9 +52,12 @@ public class AS2AsyncMdnBasicAuthHeaderTest extends 
AbstractAS2ITSupport {
     private static final String MDN_USER_NAME = "camel";
     private static final String MDN_PASSWORD = "rider";
     private static final String MDN_ACCESS_TOKEN = 
"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3";
-    private static final int TARGET_PORT = 
AvailablePortFinder.getNextAvailable();
-    private static final int RECEIPT_SERVER_PORT = 
AvailablePortFinder.getNextAvailable();
-    private static final int JETTY_PORT = 
AvailablePortFinder.getNextAvailable();
+    @RegisterExtension
+    AvailablePortFinder.Port targetPort = AvailablePortFinder.find();
+    @RegisterExtension
+    AvailablePortFinder.Port receiptServerPort = AvailablePortFinder.find();
+    @RegisterExtension
+    AvailablePortFinder.Port jettyPort = AvailablePortFinder.find();
     private static final String EDI_MESSAGE = """
             UNB+UNOA:1+005435656:1+006415160:1+060515:1434+00000000000778'
             UNH+00000000000117+INVOIC:D:97B:UN'
@@ -85,15 +87,15 @@ public class AS2AsyncMdnBasicAuthHeaderTest extends 
AbstractAS2ITSupport {
             UNZ+1+00000000000778'
             """;
 
-    private static AS2ServerConnection serverConnection;
+    private AS2ServerConnection serverConnection;
 
-    @BeforeAll
-    public static void setupTest() throws Exception {
+    @Override
+    public void setupResources() throws Exception {
         receiveTestMessages();
     }
 
-    @AfterAll
-    public static void tearDownTest() {
+    @Override
+    public void cleanupResources() {
         if (serverConnection != null) {
             serverConnection.close();
         }
@@ -102,7 +104,7 @@ public class AS2AsyncMdnBasicAuthHeaderTest extends 
AbstractAS2ITSupport {
     @Test
     public void asyncMdnHasBasicAuthHeader() throws Exception {
         requestBodyAndHeaders("direct://SEND", EDI_MESSAGE,
-                getAS2Headers("http://localhost:"; + JETTY_PORT + 
"/handle-receipts"));
+                getAS2Headers("http://localhost:"; + jettyPort.getPort() + 
"/handle-receipts"));
 
         MockEndpoint mockEndpoint = getMockEndpoint("mock:as2RcvRcptMsgs");
         mockEndpoint.expectedMinimumMessageCount(1);
@@ -114,7 +116,7 @@ public class AS2AsyncMdnBasicAuthHeaderTest extends 
AbstractAS2ITSupport {
     @Test
     public void asyncMdnHasExpectedParts() throws Exception {
         requestBodyAndHeaders("direct://SEND", EDI_MESSAGE,
-                getAS2Headers("http://localhost:"; + RECEIPT_SERVER_PORT + 
"/handle-receipts"));
+                getAS2Headers("http://localhost:"; + 
receiptServerPort.getPort() + "/handle-receipts"));
 
         MockEndpoint mockEndpoint = getMockEndpoint("mock:as2RcvRcptMsgs2");
         mockEndpoint.expectedMinimumMessageCount(1);
@@ -171,12 +173,12 @@ public class AS2AsyncMdnBasicAuthHeaderTest extends 
AbstractAS2ITSupport {
                 from("direct://SEND")
                         
.to("as2://client/send?inBody=ediMessage&httpSocketTimeout=5m&httpConnectionTimeout=5m");
 
-                from("jetty:http://localhost:"; + JETTY_PORT + 
"/handle-receipts")
+                from("jetty:http://localhost:"; + jettyPort.getPort() + 
"/handle-receipts")
                         .process(proc)
                         .to("mock:as2RcvRcptMsgs");
 
                 
fromF("as2://receipt/receive?requestUriPattern=/handle-receipts&asyncMdnPortNumber=%s",
-                        RECEIPT_SERVER_PORT)
+                        receiptServerPort.getPort())
                         .to("mock:as2RcvRcptMsgs2");
             }
         };
@@ -184,14 +186,14 @@ public class AS2AsyncMdnBasicAuthHeaderTest extends 
AbstractAS2ITSupport {
 
     @Override
     protected void customizeConfiguration(AS2Configuration configuration) {
-        configuration.setTargetPortNumber(TARGET_PORT);
+        configuration.setTargetPortNumber(targetPort.getPort());
     }
 
     // AS2 server adds Authorization header to MDN returned asynchronously
-    private static void receiveTestMessages() throws IOException {
+    private void receiveTestMessages() throws IOException {
         serverConnection = new AS2ServerConnection(
                 "1.1", "AS2ClientManagerIntegrationTest Server",
-                "server.example.com", TARGET_PORT, 
AS2SignatureAlgorithm.SHA256WITHRSA,
+                "server.example.com", targetPort.getPort(), 
AS2SignatureAlgorithm.SHA256WITHRSA,
                 null, null, null,
                 "TBD", null, null,
                 // server authorization config
diff --git 
a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2AsyncMdnTokenAuthHeaderTest.java
 
b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2AsyncMdnTokenAuthHeaderTest.java
index 152aef0bd191..09a6971972dc 100644
--- 
a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2AsyncMdnTokenAuthHeaderTest.java
+++ 
b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2AsyncMdnTokenAuthHeaderTest.java
@@ -30,9 +30,8 @@ import 
org.apache.camel.component.as2.api.AS2SignatureAlgorithm;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.http.common.HttpMessage;
 import org.apache.camel.test.AvailablePortFinder;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -43,8 +42,10 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
 public class AS2AsyncMdnTokenAuthHeaderTest extends AbstractAS2ITSupport {
 
     private static final String MDN_ACCESS_TOKEN = 
"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3";
-    private static final int TARGET_PORT = 
AvailablePortFinder.getNextAvailable();
-    private static final int RECEIPT_SERVER_PORT = 
AvailablePortFinder.getNextAvailable();
+    @RegisterExtension
+    AvailablePortFinder.Port targetPort = AvailablePortFinder.find();
+    @RegisterExtension
+    AvailablePortFinder.Port receiptServerPort = AvailablePortFinder.find();
     private static final String EDI_MESSAGE = """
             UNB+UNOA:1+005435656:1+006415160:1+060515:1434+00000000000778'
             UNH+00000000000117+INVOIC:D:97B:UN'
@@ -74,15 +75,15 @@ public class AS2AsyncMdnTokenAuthHeaderTest extends 
AbstractAS2ITSupport {
             UNZ+1+00000000000778'
             """;
 
-    private static AS2ServerConnection serverConnection;
+    private AS2ServerConnection serverConnection;
 
-    @BeforeAll
-    public static void setupTest() throws Exception {
+    @Override
+    public void setupResources() throws Exception {
         receiveTestMessages();
     }
 
-    @AfterAll
-    public static void tearDownTest() {
+    @Override
+    public void cleanupResources() {
         if (serverConnection != null) {
             serverConnection.close();
         }
@@ -91,7 +92,7 @@ public class AS2AsyncMdnTokenAuthHeaderTest extends 
AbstractAS2ITSupport {
     @Test
     public void asyncMdnHasTokenAuthHeader() throws Exception {
         requestBodyAndHeaders("direct://SEND", EDI_MESSAGE,
-                getAS2Headers("http://localhost:"; + RECEIPT_SERVER_PORT + 
"/handle-receipts"));
+                getAS2Headers("http://localhost:"; + 
receiptServerPort.getPort() + "/handle-receipts"));
 
         MockEndpoint mockEndpoint = getMockEndpoint("mock:as2RcvRcptMsgs");
         mockEndpoint.expectedMinimumMessageCount(1);
@@ -128,7 +129,7 @@ public class AS2AsyncMdnTokenAuthHeaderTest extends 
AbstractAS2ITSupport {
                 from("direct://SEND")
                         
.to("as2://client/send?inBody=ediMessage&httpSocketTimeout=5m&httpConnectionTimeout=5m");
 
-                from("jetty:http://localhost:"; + RECEIPT_SERVER_PORT + 
"/handle-receipts").process(proc)
+                from("jetty:http://localhost:"; + receiptServerPort.getPort() + 
"/handle-receipts").process(proc)
                         .to("mock:as2RcvRcptMsgs");
             }
         };
@@ -136,14 +137,14 @@ public class AS2AsyncMdnTokenAuthHeaderTest extends 
AbstractAS2ITSupport {
 
     @Override
     protected void customizeConfiguration(AS2Configuration configuration) {
-        configuration.setTargetPortNumber(TARGET_PORT);
+        configuration.setTargetPortNumber(targetPort.getPort());
     }
 
     // AS2 server adds Authorization header to MDN returned asynchronously
-    private static void receiveTestMessages() throws IOException {
+    private void receiveTestMessages() throws IOException {
         serverConnection = new AS2ServerConnection(
                 "1.1", "AS2ClientManagerIntegrationTest Server",
-                "server.example.com", TARGET_PORT, 
AS2SignatureAlgorithm.SHA256WITHRSA,
+                "server.example.com", targetPort.getPort(), 
AS2SignatureAlgorithm.SHA256WITHRSA,
                 null, null, null,
                 "TBD", null, null,
                 // server authorization config
diff --git 
a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2BasicAuthHeaderTest.java
 
b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2BasicAuthHeaderTest.java
index fa75386921fc..05ebf3b21954 100644
--- 
a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2BasicAuthHeaderTest.java
+++ 
b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2BasicAuthHeaderTest.java
@@ -32,9 +32,8 @@ import org.apache.hc.core5.http.ClassicHttpRequest;
 import org.apache.hc.core5.http.ContentType;
 import org.apache.hc.core5.http.HttpEntity;
 import org.apache.hc.core5.http.HttpRequest;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertInstanceOf;
@@ -45,7 +44,8 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
  */
 public class AS2BasicAuthHeaderTest extends AbstractAS2ITSupport {
 
-    private static final int TARGET_PORT = 
AvailablePortFinder.getNextAvailable();
+    @RegisterExtension
+    AvailablePortFinder.Port targetPort = AvailablePortFinder.find();
     // Basic Auth takes precedence when auth token also provided
     private static final String USER_NAME = "camel";
     private static final String PASSWORD = "rider";
@@ -79,16 +79,16 @@ public class AS2BasicAuthHeaderTest extends 
AbstractAS2ITSupport {
             UNZ+1+00000000000778'
             """;
 
-    private static AS2ServerConnection serverConnection;
-    private static AS2ClientManagerIT.RequestHandler requestHandler;
+    private AS2ServerConnection serverConnection;
+    private AS2ClientManagerIT.RequestHandler requestHandler;
 
-    @BeforeAll
-    public static void setupTest() throws Exception {
+    @Override
+    public void setupResources() throws Exception {
         receiveTestMessages();
     }
 
-    @AfterAll
-    public static void tearDownTest() {
+    @Override
+    public void cleanupResources() {
         if (serverConnection != null) {
             serverConnection.close();
         }
@@ -193,13 +193,13 @@ public class AS2BasicAuthHeaderTest extends 
AbstractAS2ITSupport {
 
     @Override
     protected void customizeConfiguration(AS2Configuration configuration) {
-        configuration.setTargetPortNumber(TARGET_PORT);
+        configuration.setTargetPortNumber(targetPort.getPort());
     }
 
-    private static void receiveTestMessages() throws IOException {
+    private void receiveTestMessages() throws IOException {
         serverConnection = new AS2ServerConnection(
                 "1.1", "AS2ClientManagerIntegrationTest Server",
-                "server.example.com", TARGET_PORT, 
AS2SignatureAlgorithm.SHA256WITHRSA,
+                "server.example.com", targetPort.getPort(), 
AS2SignatureAlgorithm.SHA256WITHRSA,
                 null, null, null,
                 "TBD", null, null, null, null, null);
         requestHandler = new AS2ClientManagerIT.RequestHandler();
diff --git 
a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ClientManagerIT.java
 
b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ClientManagerIT.java
index 9bb7c3891da3..2ab7f4809508 100644
--- 
a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ClientManagerIT.java
+++ 
b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ClientManagerIT.java
@@ -81,9 +81,8 @@ import org.apache.hc.core5.http.protocol.HttpCoreContext;
 import org.apache.hc.core5.http.protocol.HttpDateGenerator;
 import org.bouncycastle.cms.jcajce.ZlibExpanderProvider;
 import org.bouncycastle.jce.provider.BouncyCastleProvider;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -150,15 +149,16 @@ public class AS2ClientManagerIT extends 
AbstractAS2ITSupport {
     private static final String SIGNED_RECEIPT_MIC_ALGORITHMS = "sha1,md5";
     private static final String DISPOSITION_NOTIFICATION_OPTIONS
             = "signed-receipt-protocol=optional,pkcs7-signature; 
signed-receipt-micalg=optional,sha1";
-    private static final int PARTNER_TARGET_PORT = 
AvailablePortFinder.getNextAvailable();
-    private static final int MDN_TARGET_PORT = 
AvailablePortFinder.getNextAvailable();
-    private static final String RECIPIENT_DELIVERY_ADDRESS = 
"http://localhost:"; + MDN_TARGET_PORT + "/handle-receipts";
+    @RegisterExtension
+    AvailablePortFinder.Port partnerTargetPort = AvailablePortFinder.find();
+    @RegisterExtension
+    AvailablePortFinder.Port mdnTargetPort = AvailablePortFinder.find();
     private static final String REPORTING_UA = "Server Responding with MDN";
 
-    private static AS2ServerConnection serverConnection;
+    private AS2ServerConnection serverConnection;
     private static KeyPair serverKP;
     private static X509Certificate serverCert;
-    private static RequestHandler requestHandler;
+    private RequestHandler requestHandler;
 
     private static final HttpDateGenerator DATE_GENERATOR = 
HttpDateGenerator.INSTANCE;
 
@@ -167,7 +167,7 @@ public class AS2ClientManagerIT extends 
AbstractAS2ITSupport {
 
     @Override
     protected void customizeConfiguration(AS2Configuration configuration) {
-        configuration.setTargetPortNumber(PARTNER_TARGET_PORT);
+        configuration.setTargetPortNumber(partnerTargetPort.getPort());
     }
 
     @Test
@@ -891,18 +891,20 @@ public class AS2ClientManagerIT extends 
AbstractAS2ITSupport {
 
         // Send MDN
         @SuppressWarnings("unused")
-        HttpCoreContext httpContext = mdnManager.send(mdn, 
mdn.getMainMessageContentType(), RECIPIENT_DELIVERY_ADDRESS);
+        HttpCoreContext httpContext
+                = mdnManager.send(mdn, mdn.getMainMessageContentType(),
+                        "http://localhost:"; + mdnTargetPort.getPort() + 
"/handle-receipts");
     }
 
-    @BeforeAll
-    public static void setupTest() throws Exception {
+    @Override
+    public void setupResources() throws Exception {
         setupServerKeysAndCertificates();
         setupClientKeysAndCertificates();
         receiveTestMessages();
     }
 
-    @AfterAll
-    public static void teardownTest() throws Exception {
+    @Override
+    public void cleanupResources() {
         if (serverConnection != null) {
             serverConnection.close();
         }
@@ -967,7 +969,7 @@ public class AS2ClientManagerIT extends 
AbstractAS2ITSupport {
                                 AS2_NAME,
                                 AS2_NAME);
 
-                from("jetty:http://localhost:"; + MDN_TARGET_PORT + 
"/handle-receipts").process(proc);
+                from("jetty:http://localhost:"; + mdnTargetPort.getPort() + 
"/handle-receipts").process(proc);
 
             }
         };
@@ -994,10 +996,10 @@ public class AS2ClientManagerIT extends 
AbstractAS2ITSupport {
         serverCert = Utils.makeCertificate(serverKP, signingDN, issueKP, 
issueDN);
     }
 
-    private static void receiveTestMessages() throws IOException {
+    private void receiveTestMessages() throws IOException {
         serverConnection = new AS2ServerConnection(
                 AS2_VERSION, ORIGIN_SERVER_NAME,
-                SERVER_FQDN, PARTNER_TARGET_PORT, 
AS2SignatureAlgorithm.SHA256WITHRSA,
+                SERVER_FQDN, partnerTargetPort.getPort(), 
AS2SignatureAlgorithm.SHA256WITHRSA,
                 new Certificate[] { serverCert }, serverKP.getPrivate(), null,
                 MDN_MESSAGE_TEMPLATE, null, null, null, null, null);
         requestHandler = new RequestHandler();
diff --git 
a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerBasicAuthHeaderTest.java
 
b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerBasicAuthHeaderTest.java
index 62d99d7caab6..3c414991de16 100644
--- 
a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerBasicAuthHeaderTest.java
+++ 
b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerBasicAuthHeaderTest.java
@@ -31,6 +31,7 @@ import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.http.common.HttpMessage;
 import org.apache.camel.test.AvailablePortFinder;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -42,8 +43,10 @@ public class AS2ServerBasicAuthHeaderTest extends 
AbstractAS2ITSupport {
 
     private static final String MDN_USER_NAME = "camel";
     private static final String MDN_PASSWORD = "rider";
-    private static final int TARGET_PORT = 
AvailablePortFinder.getNextAvailable();
-    private static final int JETTY_PORT = 
AvailablePortFinder.getNextAvailable();
+    @RegisterExtension
+    AvailablePortFinder.Port targetPort = AvailablePortFinder.find();
+    @RegisterExtension
+    AvailablePortFinder.Port jettyPort = AvailablePortFinder.find();
     private static final String EDI_MESSAGE = """
             UNB+UNOA:1+005435656:1+006415160:1+060515:1434+00000000000778'
             UNH+00000000000117+INVOIC:D:97B:UN'
@@ -76,7 +79,7 @@ public class AS2ServerBasicAuthHeaderTest extends 
AbstractAS2ITSupport {
     // verify that the jetty server receives a Basic Auth header
     @Test
     public void serverRouteWithBasicAuthConfig() throws Exception {
-        clientSend("/basic", "http://localhost:"; + JETTY_PORT + 
"/receiptsWithBasicAuth");
+        clientSend("/basic", "http://localhost:"; + jettyPort.getPort() + 
"/receiptsWithBasicAuth");
 
         MockEndpoint mockEndpoint = getMockEndpoint("mock:as2RcvRcptMsgs");
         mockEndpoint.expectedMinimumMessageCount(1);
@@ -100,7 +103,7 @@ public class AS2ServerBasicAuthHeaderTest extends 
AbstractAS2ITSupport {
                         MDN_USER_NAME, MDN_PASSWORD))
                         .to("mock:as2RcvMsgs");
 
-                from("jetty:http://localhost:"; + JETTY_PORT + 
"/receiptsWithBasicAuth")
+                from("jetty:http://localhost:"; + jettyPort.getPort() + 
"/receiptsWithBasicAuth")
                         .process(basicHeaderProc)
                         .to("mock:as2RcvRcptMsgs");
             }
@@ -118,12 +121,12 @@ public class AS2ServerBasicAuthHeaderTest extends 
AbstractAS2ITSupport {
 
     private AS2ClientConnection getAs2ClientConnection() throws IOException {
         return new AS2ClientConnection(
-                "1.1", "Camel AS2 Endpoint", "example.org", "localhost", 
TARGET_PORT, Duration.ofSeconds(5),
+                "1.1", "Camel AS2 Endpoint", "example.org", "localhost", 
targetPort.getPort(), Duration.ofSeconds(5),
                 Duration.ofSeconds(5), 5, Duration.ofMinutes(15), null, null);
     }
 
     @Override
     protected void customizeConfiguration(AS2Configuration configuration) {
-        configuration.setServerPortNumber(TARGET_PORT);
+        configuration.setServerPortNumber(targetPort.getPort());
     }
 }
diff --git 
a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerBearerAuthHeaderTest.java
 
b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerBearerAuthHeaderTest.java
index 6033e621f080..9ae4ea3a704e 100644
--- 
a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerBearerAuthHeaderTest.java
+++ 
b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerBearerAuthHeaderTest.java
@@ -30,6 +30,7 @@ import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.http.common.HttpMessage;
 import org.apache.camel.test.AvailablePortFinder;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -40,8 +41,10 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
 public class AS2ServerBearerAuthHeaderTest extends AbstractAS2ITSupport {
 
     private static final String MDN_ACCESS_TOKEN = 
"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3";
-    private static final int TARGET_PORT = 
AvailablePortFinder.getNextAvailable();
-    private static final int JETTY_PORT = 
AvailablePortFinder.getNextAvailable();
+    @RegisterExtension
+    AvailablePortFinder.Port targetPort = AvailablePortFinder.find();
+    @RegisterExtension
+    AvailablePortFinder.Port jettyPort = AvailablePortFinder.find();
     private static final String EDI_MESSAGE = """
             UNB+UNOA:1+005435656:1+006415160:1+060515:1434+00000000000778'
             UNH+00000000000117+INVOIC:D:97B:UN'
@@ -74,7 +77,7 @@ public class AS2ServerBearerAuthHeaderTest extends 
AbstractAS2ITSupport {
     // verify that the jetty server receives a Bearer Auth header
     @Test
     public void serverRouteWithBearerAuthConfig() throws Exception {
-        clientSend("/bearer", "http://localhost:"; + JETTY_PORT + 
"/receiptsWithBearerAuth");
+        clientSend("/bearer", "http://localhost:"; + jettyPort.getPort() + 
"/receiptsWithBearerAuth");
 
         MockEndpoint mockEndpoint = getMockEndpoint("mock:as2RcvRcptMsgs2");
         mockEndpoint.expectedMinimumMessageCount(1);
@@ -97,7 +100,7 @@ public class AS2ServerBearerAuthHeaderTest extends 
AbstractAS2ITSupport {
                         MDN_ACCESS_TOKEN))
                         .to("mock:as2RcvMsgs");
 
-                from("jetty:http://localhost:"; + JETTY_PORT + 
"/receiptsWithBearerAuth")
+                from("jetty:http://localhost:"; + jettyPort.getPort() + 
"/receiptsWithBearerAuth")
                         .process(tokenHeaderProc)
                         .to("mock:as2RcvRcptMsgs2");
             }
@@ -115,12 +118,12 @@ public class AS2ServerBearerAuthHeaderTest extends 
AbstractAS2ITSupport {
 
     private AS2ClientConnection getAs2ClientConnection() throws IOException {
         return new AS2ClientConnection(
-                "1.1", "Camel AS2 Endpoint", "example.org", "localhost", 
TARGET_PORT, Duration.ofSeconds(5),
+                "1.1", "Camel AS2 Endpoint", "example.org", "localhost", 
targetPort.getPort(), Duration.ofSeconds(5),
                 Duration.ofSeconds(5), 5, Duration.ofMinutes(15), null, null);
     }
 
     @Override
     protected void customizeConfiguration(AS2Configuration configuration) {
-        configuration.setServerPortNumber(TARGET_PORT);
+        configuration.setServerPortNumber(targetPort.getPort());
     }
 }
diff --git 
a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerManagerEncryptedIT.java
 
b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerManagerEncryptedIT.java
index 9a06e650ce9b..09e415d54007 100644
--- 
a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerManagerEncryptedIT.java
+++ 
b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerManagerEncryptedIT.java
@@ -60,7 +60,7 @@ public class AS2ServerManagerEncryptedIT extends 
AS2ServerManagerITBase {
     public void receiveEnvelopedMessageTest() throws Exception {
         AS2ClientConnection clientConnection
                 = new AS2ClientConnection(
-                        AS2_VERSION, USER_AGENT, CLIENT_FQDN, TARGET_HOST, 
TARGET_PORT, HTTP_SOCKET_TIMEOUT,
+                        AS2_VERSION, USER_AGENT, CLIENT_FQDN, TARGET_HOST, 
targetPort.getPort(), HTTP_SOCKET_TIMEOUT,
                         HTTP_CONNECTION_TIMEOUT, HTTP_CONNECTION_POOL_SIZE, 
HTTP_CONNECTION_POOL_TTL, clientSslContext,
                         null);
         AS2ClientManager clientManager = new 
AS2ClientManager(clientConnection);
@@ -96,7 +96,7 @@ public class AS2ServerManagerEncryptedIT extends 
AS2ServerManagerITBase {
         assertEquals(AS2_NAME, 
request.getFirstHeader(AS2Header.AS2_TO).getValue(), "Unexpected AS2 to value");
         
assertTrue(request.getFirstHeader(AS2Header.MESSAGE_ID).getValue().endsWith(CLIENT_FQDN
 + ">"),
                 "Unexpected message id value");
-        assertEquals(TARGET_HOST + ":" + TARGET_PORT, 
request.getFirstHeader(AS2Header.TARGET_HOST).getValue(),
+        assertEquals(TARGET_HOST + ":" + targetPort.getPort(), 
request.getFirstHeader(AS2Header.TARGET_HOST).getValue(),
                 "Unexpected target host value");
         assertEquals(USER_AGENT, 
request.getFirstHeader(AS2Header.USER_AGENT).getValue(), "Unexpected user agent 
value");
         assertNotNull(request.getFirstHeader(AS2Header.DATE), "Date value 
missing");
@@ -133,7 +133,7 @@ public class AS2ServerManagerEncryptedIT extends 
AS2ServerManagerITBase {
     public void receiveEnvelopedCompressedAndSignedMessageTest() throws 
Exception {
         AS2ClientConnection clientConnection
                 = new AS2ClientConnection(
-                        AS2_VERSION, USER_AGENT, CLIENT_FQDN, TARGET_HOST, 
TARGET_PORT, HTTP_SOCKET_TIMEOUT,
+                        AS2_VERSION, USER_AGENT, CLIENT_FQDN, TARGET_HOST, 
targetPort.getPort(), HTTP_SOCKET_TIMEOUT,
                         HTTP_CONNECTION_TIMEOUT, HTTP_CONNECTION_POOL_SIZE, 
HTTP_CONNECTION_POOL_TTL, clientSslContext,
                         null);
         AS2ClientManager clientManager = new 
AS2ClientManager(clientConnection);
diff --git 
a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerManagerIT.java
 
b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerManagerIT.java
index 0cd5981efc9b..42d5eabc19de 100644
--- 
a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerManagerIT.java
+++ 
b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerManagerIT.java
@@ -127,7 +127,7 @@ public class AS2ServerManagerIT extends 
AS2ServerManagerITBase {
         assertEquals(AS2_NAME, 
request.getFirstHeader(AS2Header.AS2_TO).getValue(), "Unexpected AS2 to value");
         
assertTrue(request.getFirstHeader(AS2Header.MESSAGE_ID).getValue().endsWith(CLIENT_FQDN
 + ">"),
                 "Unexpected message id value");
-        assertEquals(TARGET_HOST + ":" + TARGET_PORT, 
request.getFirstHeader(AS2Header.TARGET_HOST).getValue(),
+        assertEquals(TARGET_HOST + ":" + targetPort.getPort(), 
request.getFirstHeader(AS2Header.TARGET_HOST).getValue(),
                 "Unexpected target host value");
         assertEquals(USER_AGENT, 
request.getFirstHeader(AS2Header.USER_AGENT).getValue(), "Unexpected user agent 
value");
         assertNotNull(request.getFirstHeader(AS2Header.DATE), "Date value 
missing");
@@ -204,7 +204,7 @@ public class AS2ServerManagerIT extends 
AS2ServerManagerITBase {
         assertEquals(AS2_NAME, 
request.getFirstHeader(AS2Header.AS2_TO).getValue(), "Unexpected AS2 to value");
         
assertTrue(request.getFirstHeader(AS2Header.MESSAGE_ID).getValue().endsWith(CLIENT_FQDN
 + ">"),
                 "Unexpected message id value");
-        assertEquals(TARGET_HOST + ":" + TARGET_PORT, 
request.getFirstHeader(AS2Header.TARGET_HOST).getValue(),
+        assertEquals(TARGET_HOST + ":" + targetPort.getPort(), 
request.getFirstHeader(AS2Header.TARGET_HOST).getValue(),
                 "Unexpected target host value");
         assertEquals(USER_AGENT, 
request.getFirstHeader(AS2Header.USER_AGENT).getValue(), "Unexpected user agent 
value");
         assertNotNull(request.getFirstHeader(AS2Header.DATE), "Date value 
missing");
@@ -239,10 +239,10 @@ public class AS2ServerManagerIT extends 
AS2ServerManagerITBase {
                 "EDI message does not match");
     }
 
-    private static AS2ClientConnection getAs2ClientConnection() throws 
IOException {
+    private AS2ClientConnection getAs2ClientConnection() throws IOException {
         AS2ClientConnection clientConnection
                 = new AS2ClientConnection(
-                        AS2_VERSION, USER_AGENT, CLIENT_FQDN, TARGET_HOST, 
TARGET_PORT, HTTP_SOCKET_TIMEOUT,
+                        AS2_VERSION, USER_AGENT, CLIENT_FQDN, TARGET_HOST, 
targetPort.getPort(), HTTP_SOCKET_TIMEOUT,
                         HTTP_CONNECTION_TIMEOUT, HTTP_CONNECTION_POOL_SIZE, 
HTTP_CONNECTION_POOL_TTL, clientSslContext,
                         null);
         return clientConnection;
@@ -303,7 +303,7 @@ public class AS2ServerManagerIT extends 
AS2ServerManagerITBase {
         assertEquals(AS2_NAME, 
request.getFirstHeader(AS2Header.AS2_TO).getValue(), "Unexpected AS2 to value");
         
assertTrue(request.getFirstHeader(AS2Header.MESSAGE_ID).getValue().endsWith(CLIENT_FQDN
 + ">"),
                 "Unexpected message id value");
-        assertEquals(TARGET_HOST + ":" + TARGET_PORT, 
request.getFirstHeader(AS2Header.TARGET_HOST).getValue(),
+        assertEquals(TARGET_HOST + ":" + targetPort.getPort(), 
request.getFirstHeader(AS2Header.TARGET_HOST).getValue(),
                 "Unexpected target host value");
         assertEquals(USER_AGENT, 
request.getFirstHeader(AS2Header.USER_AGENT).getValue(), "Unexpected user agent 
value");
         assertNotNull(request.getFirstHeader(AS2Header.DATE), "Date value 
missing");
@@ -382,7 +382,7 @@ public class AS2ServerManagerIT extends 
AS2ServerManagerITBase {
         assertEquals(AS2_NAME, 
request.getFirstHeader(AS2Header.AS2_TO).getValue(), "Unexpected AS2 to value");
         
assertTrue(request.getFirstHeader(AS2Header.MESSAGE_ID).getValue().endsWith(CLIENT_FQDN
 + ">"),
                 "Unexpected message id value");
-        assertEquals(TARGET_HOST + ":" + TARGET_PORT, 
request.getFirstHeader(AS2Header.TARGET_HOST).getValue(),
+        assertEquals(TARGET_HOST + ":" + targetPort.getPort(), 
request.getFirstHeader(AS2Header.TARGET_HOST).getValue(),
                 "Unexpected target host value");
         assertEquals(USER_AGENT, 
request.getFirstHeader(AS2Header.USER_AGENT).getValue(), "Unexpected user agent 
value");
         assertNotNull(request.getFirstHeader(AS2Header.DATE), "Date value 
missing");
@@ -473,7 +473,7 @@ public class AS2ServerManagerIT extends 
AS2ServerManagerITBase {
         assertEquals(AS2_NAME, 
request.getFirstHeader(AS2Header.AS2_TO).getValue(), "Unexpected AS2 to value");
         
assertTrue(request.getFirstHeader(AS2Header.MESSAGE_ID).getValue().endsWith(CLIENT_FQDN
 + ">"),
                 "Unexpected message id value");
-        assertEquals(TARGET_HOST + ":" + TARGET_PORT, 
request.getFirstHeader(AS2Header.TARGET_HOST).getValue(),
+        assertEquals(TARGET_HOST + ":" + targetPort.getPort(), 
request.getFirstHeader(AS2Header.TARGET_HOST).getValue(),
                 "Unexpected target host value");
         assertEquals(USER_AGENT, 
request.getFirstHeader(AS2Header.USER_AGENT).getValue(), "Unexpected user agent 
value");
         assertNotNull(request.getFirstHeader(AS2Header.DATE), "Date value 
missing");
diff --git 
a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerManagerITBase.java
 
b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerManagerITBase.java
index 0a25a56f6b94..624f6f5d0980 100644
--- 
a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerManagerITBase.java
+++ 
b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerManagerITBase.java
@@ -68,6 +68,7 @@ import org.bouncycastle.cert.jcajce.JcaCertStore;
 import org.bouncycastle.cms.jcajce.ZlibExpanderProvider;
 import org.bouncycastle.jce.provider.BouncyCastleProvider;
 import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -83,7 +84,8 @@ public class AS2ServerManagerITBase extends 
AbstractAS2ITSupport {
 
     protected static final String METHOD = "POST";
     protected static final String TARGET_HOST = "localhost";
-    protected static final int TARGET_PORT = 
AvailablePortFinder.getNextAvailable();
+    @RegisterExtension
+    protected AvailablePortFinder.Port targetPort = AvailablePortFinder.find();
     protected static final Duration HTTP_SOCKET_TIMEOUT = 
Duration.ofSeconds(5);
     protected static final Duration HTTP_CONNECTION_TIMEOUT = 
Duration.ofSeconds(5);
     protected static final Integer HTTP_CONNECTION_POOL_SIZE = 5;
@@ -142,7 +144,7 @@ public class AS2ServerManagerITBase extends 
AbstractAS2ITSupport {
 
     @Override
     protected void customizeConfiguration(AS2Configuration configuration) {
-        configuration.setServerPortNumber(TARGET_PORT);
+        configuration.setServerPortNumber(targetPort.getPort());
     }
 
     @Override
@@ -289,7 +291,7 @@ public class AS2ServerManagerITBase extends 
AbstractAS2ITSupport {
         assertEquals(AS2_NAME, 
request.getFirstHeader(AS2Header.AS2_TO).getValue(), "Unexpected AS2 to value");
         
assertTrue(request.getFirstHeader(AS2Header.MESSAGE_ID).getValue().endsWith(CLIENT_FQDN
 + ">"),
                 "Unexpected message id value");
-        assertEquals(TARGET_HOST + ":" + TARGET_PORT, 
request.getFirstHeader(AS2Header.TARGET_HOST).getValue(),
+        assertEquals(TARGET_HOST + ":" + targetPort.getPort(), 
request.getFirstHeader(AS2Header.TARGET_HOST).getValue(),
                 "Unexpected target host value");
         assertEquals(USER_AGENT, 
request.getFirstHeader(AS2Header.USER_AGENT).getValue(), "Unexpected user agent 
value");
         assertNotNull(request.getFirstHeader(AS2Header.DATE), "Date value 
missing");
diff --git 
a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerSecTestBase.java
 
b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerSecTestBase.java
index 7d7d9dc6ba66..e3acd5d538eb 100644
--- 
a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerSecTestBase.java
+++ 
b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerSecTestBase.java
@@ -49,6 +49,7 @@ import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.protocol.HttpCoreContext;
 import org.bouncycastle.jce.provider.BouncyCastleProvider;
 import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -58,7 +59,8 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 public class AS2ServerSecTestBase extends AbstractAS2ITSupport {
 
     protected static final String TARGET_HOST = "localhost";
-    protected static final int TARGET_PORT = 
AvailablePortFinder.getNextAvailable();
+    @RegisterExtension
+    protected AvailablePortFinder.Port targetPort = AvailablePortFinder.find();
     protected static final Duration HTTP_SOCKET_TIMEOUT = 
Duration.ofSeconds(5);
     protected static final Duration HTTP_CONNECTION_TIMEOUT = 
Duration.ofSeconds(5);
     protected static final Integer HTTP_CONNECTION_POOL_SIZE = 5;
@@ -112,7 +114,7 @@ public class AS2ServerSecTestBase extends 
AbstractAS2ITSupport {
 
     @Override
     protected void customizeConfiguration(AS2Configuration configuration) {
-        configuration.setServerPortNumber(TARGET_PORT);
+        configuration.setServerPortNumber(targetPort.getPort());
     }
 
     @Override
@@ -231,7 +233,7 @@ public class AS2ServerSecTestBase extends 
AbstractAS2ITSupport {
     protected AS2ClientManager clientConnection() throws IOException {
         AS2ClientConnection clientConnection
                 = new AS2ClientConnection(
-                        AS2_VERSION, USER_AGENT, CLIENT_FQDN, TARGET_HOST, 
TARGET_PORT, HTTP_SOCKET_TIMEOUT,
+                        AS2_VERSION, USER_AGENT, CLIENT_FQDN, TARGET_HOST, 
targetPort.getPort(), HTTP_SOCKET_TIMEOUT,
                         HTTP_CONNECTION_TIMEOUT, HTTP_CONNECTION_POOL_SIZE, 
HTTP_CONNECTION_POOL_TTL, null,
                         null);
         return new AS2ClientManager(clientConnection);
diff --git 
a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2TokenAuthHeaderTest.java
 
b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2TokenAuthHeaderTest.java
index f3e606eec44f..4a599ba40fac 100644
--- 
a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2TokenAuthHeaderTest.java
+++ 
b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2TokenAuthHeaderTest.java
@@ -27,9 +27,8 @@ import org.apache.camel.component.as2.api.AS2ServerConnection;
 import org.apache.camel.component.as2.api.AS2SignatureAlgorithm;
 import org.apache.camel.test.AvailablePortFinder;
 import org.apache.hc.core5.http.HttpRequest;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -39,7 +38,8 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
  */
 public class AS2TokenAuthHeaderTest extends AbstractAS2ITSupport {
 
-    private static final int TARGET_PORT = 
AvailablePortFinder.getNextAvailable();
+    @RegisterExtension
+    AvailablePortFinder.Port targetPort = AvailablePortFinder.find();
     private static final String ACCESS_TOKEN = 
"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3";
     private static final String EDI_MESSAGE = """
             UNB+UNOA:1+005435656:1+006415160:1+060515:1434+00000000000778'
@@ -70,16 +70,16 @@ public class AS2TokenAuthHeaderTest extends 
AbstractAS2ITSupport {
             UNZ+1+00000000000778'
             """;
 
-    private static AS2ServerConnection serverConnection;
-    private static AS2ClientManagerIT.RequestHandler requestHandler;
+    private AS2ServerConnection serverConnection;
+    private AS2ClientManagerIT.RequestHandler requestHandler;
 
-    @BeforeAll
-    public static void setupTest() throws Exception {
+    @Override
+    public void setupResources() throws Exception {
         receiveTestMessages();
     }
 
-    @AfterAll
-    public static void tearDownTest() {
+    @Override
+    public void cleanupResources() {
         if (serverConnection != null) {
             serverConnection.close();
         }
@@ -139,13 +139,13 @@ public class AS2TokenAuthHeaderTest extends 
AbstractAS2ITSupport {
 
     @Override
     protected void customizeConfiguration(AS2Configuration configuration) {
-        configuration.setTargetPortNumber(TARGET_PORT);
+        configuration.setTargetPortNumber(targetPort.getPort());
     }
 
-    private static void receiveTestMessages() throws IOException {
+    private void receiveTestMessages() throws IOException {
         serverConnection = new AS2ServerConnection(
                 "1.1", "AS2ClientManagerIntegrationTest Server",
-                "server.example.com", TARGET_PORT, 
AS2SignatureAlgorithm.SHA256WITHRSA,
+                "server.example.com", targetPort.getPort(), 
AS2SignatureAlgorithm.SHA256WITHRSA,
                 null, null, null,
                 "TBD", null, null, null, null, null);
         requestHandler = new AS2ClientManagerIT.RequestHandler();

Reply via email to