You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2024/03/14 08:24:58 UTC

(camel) branch main updated (7f0c3971cde -> 9a87a3d467d)

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

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


    from 7f0c3971cde CAMEL-20654: camel-xslt: Make variables available as xsl:param (#13467)
     new dcfbe871423 CAMEL-20447: fix SjmsComponentRestartTest test due to lifecycle requirements
     new ddddb412468 CAMEL-20477: rework a shared topic test to allow tests to run concurrently
     new 32035640538 CAMEL-20477: make the shared topic test an integration test for consistency
     new 9a87a3d467d CAMEL-20477: adjust Artemis service to reduce broker recycling

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../jms/JmsAsyncStartStopListenerTest.java         |   2 +-
 .../jms/JmsDefaultTaskExecutorTypeTest.java        |   2 +-
 ...RequestReplyTempQueueMultipleConsumersTest.java |   2 +-
 .../component/jms/TwoConsumerOnSameTopicTest.java  | 132 ---------------------
 .../jms/integration/JmsLoadBalanceFailOverIT.java  |   2 +-
 .../consumers/MultipleMessagesSameTopicIT.java     |  66 +++++++++++
 .../consumers/SingleMessageSameTopicIT.java        | 110 +++++++++++++++++
 .../consumers/TwoConsumerOnSameQueueIT.java}       |   4 +-
 ...dLetterChannelHandlerRollbackOnExceptionIT.java |   2 +-
 .../jms/tx/TransactedOnCompletionTest.java         |   2 +-
 .../component/sjms/SjmsComponentRestartTest.java   |  22 +++-
 .../sjms/consumer/InOutConsumerQueueAsyncTest.java |  20 +++-
 .../sjms/producer/QueueProducerQoSTest.java        |   2 +-
 .../sjms/support/JmsCommonTestSupport.java         |   2 +-
 .../sjms/tx/TransactedConcurrentConsumersTest.java |   6 +
 .../sjms/tx/TransactedConsumerSupport.java         |   6 -
 .../tx/TransactedConsumersMultipleRouteTest.java   |   6 +
 .../sjms/tx/TransactedQueueConsumerTest.java       |   6 +
 .../sjms/tx/TransactedTopicConsumerTest.java       |   6 +
 .../component/sjms2/SimpleJms2ComponentTest.java   |   2 +-
 .../sjms2/Sjms2EndpointNameOverrideTest.java       |   2 +-
 .../camel/component/sjms2/Sjms2EndpointTest.java   |   2 +-
 .../consumer/InOnlyTopicDurableConsumerTest.java   |  11 ++
 .../consumer/InOnlyTopicSharedConsumerTest.java    |  11 ++
 .../sjms2/producer/InOnlyQueueProducerTest.java    |  10 ++
 .../sjms2/producer/InOnlyTopicProducerTest.java    |  10 ++
 .../sjms2/producer/Sjms2ToDSendDynamicTest.java    |  11 ++
 .../component/sjms2/support/Jms2TestSupport.java   |  16 +--
 .../camel/component/stomp/StompBaseTest.java       |   6 +-
 .../infra/artemis/services/ArtemisService.java     |  10 +-
 .../artemis/services/ArtemisServiceFactory.java    |   4 +-
 31 files changed, 319 insertions(+), 176 deletions(-)
 delete mode 100644 components/camel-jms/src/test/java/org/apache/camel/component/jms/TwoConsumerOnSameTopicTest.java
 create mode 100644 components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/consumers/MultipleMessagesSameTopicIT.java
 create mode 100644 components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/consumers/SingleMessageSameTopicIT.java
 rename components/camel-jms/src/test/java/org/apache/camel/component/jms/{TwoConsumerOnSameQueueTest.java => integration/consumers/TwoConsumerOnSameQueueIT.java} (98%)


(camel) 02/04: CAMEL-20477: rework a shared topic test to allow tests to run concurrently

Posted by or...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit ddddb412468b6361240a896c005e31e90bc03d12
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Wed Mar 13 10:59:14 2024 +0100

    CAMEL-20477: rework a shared topic test to allow tests to run concurrently
---
 .../component/jms/TwoConsumerOnSameTopicTest.java  | 132 ---------------------
 .../consumers/MultipleMessagesSameTopicIT.java     |  66 +++++++++++
 .../consumers/SingleMessageSameTopicIT.java        | 110 +++++++++++++++++
 3 files changed, 176 insertions(+), 132 deletions(-)

diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/TwoConsumerOnSameTopicTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/TwoConsumerOnSameTopicTest.java
deleted file mode 100644
index 4d5fda5ed46..00000000000
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/TwoConsumerOnSameTopicTest.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.jms;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.awaitility.Awaitility;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-public class TwoConsumerOnSameTopicTest extends AbstractPersistentJMSTest {
-
-    @Nested
-    class MultipleMessagesTest {
-        @Test
-        public void testMultipleMessagesOnSameTopic() throws Exception {
-            getMockEndpoint("mock:a").expectedBodiesReceived("Hello Camel 1", "Hello Camel 2", "Hello Camel 3",
-                    "Hello Camel 4");
-            getMockEndpoint("mock:b").expectedBodiesReceived("Hello Camel 1", "Hello Camel 2", "Hello Camel 3",
-                    "Hello Camel 4");
-
-            template.sendBody("activemq:topic:TwoConsumerOnSameTopicTest", "Hello Camel 1");
-            template.sendBody("activemq:topic:TwoConsumerOnSameTopicTest", "Hello Camel 2");
-            template.sendBody("activemq:topic:TwoConsumerOnSameTopicTest", "Hello Camel 3");
-            template.sendBody("activemq:topic:TwoConsumerOnSameTopicTest", "Hello Camel 4");
-
-            MockEndpoint.assertIsSatisfied(context);
-        }
-    }
-
-    @Nested
-    class SingleMessageTest {
-
-        @BeforeEach
-        void prepare() {
-            getMockEndpoint("mock:a").expectedBodiesReceived("Hello World");
-            getMockEndpoint("mock:b").expectedBodiesReceived("Hello World");
-
-            template.sendBody("activemq:topic:TwoConsumerOnSameTopicTest", "Hello World");
-        }
-
-        @Test
-        void testTwoConsumerOnSameTopic() throws Exception {
-            MockEndpoint.assertIsSatisfied(context);
-        }
-
-        @Test
-        void testStopAndStartOneRoute() throws Exception {
-            MockEndpoint.assertIsSatisfied(context);
-
-            // now stop route A
-            context.getRouteController().stopRoute("a");
-
-            // send new message should go to B only
-            MockEndpoint.resetMocks(context);
-
-            getMockEndpoint("mock:a").expectedMessageCount(0);
-            getMockEndpoint("mock:b").expectedBodiesReceived("Bye World");
-
-            template.sendBody("activemq:topic:TwoConsumerOnSameTopicTest", "Bye World");
-
-            MockEndpoint.assertIsSatisfied(context);
-
-            // send new message should go to both A and B
-            MockEndpoint.resetMocks(context);
-
-            // now start route A
-            context.getRouteController().startRoute("a");
-
-            getMockEndpoint("mock:a").expectedBodiesReceived("Hello World");
-            getMockEndpoint("mock:b").expectedBodiesReceived("Hello World");
-
-            template.sendBody("activemq:topic:TwoConsumerOnSameTopicTest", "Hello World");
-        }
-
-        @Test
-        void testRemoveOneRoute() throws Exception {
-            MockEndpoint.assertIsSatisfied(context);
-
-            // now stop and remove route A
-            context.getRouteController().stopRoute("a");
-            assertTrue(context.removeRoute("a"));
-
-            // send new message should go to B only
-            MockEndpoint.resetMocks(context);
-
-            getMockEndpoint("mock:a").expectedMessageCount(0);
-            getMockEndpoint("mock:b").expectedBodiesReceived("Bye World");
-
-            template.sendBody("activemq:topic:TwoConsumerOnSameTopicTest", "Bye World");
-
-            MockEndpoint.assertIsSatisfied(context);
-        }
-    }
-
-    @BeforeEach
-    void waitForConnections() {
-        Awaitility.await().until(() -> context.getRoute("a").getUptimeMillis() > 200);
-        Awaitility.await().until(() -> context.getRoute("a").getUptimeMillis() > 200);
-    }
-
-    @Override
-    protected RouteBuilder createRouteBuilder() {
-        return new RouteBuilder() {
-            @Override
-            public void configure() {
-                from("activemq:topic:TwoConsumerOnSameTopicTest").routeId("a")
-                        .to("log:a", "mock:a");
-
-                from("activemq:topic:TwoConsumerOnSameTopicTest").routeId("b")
-                        .to("log:b", "mock:b");
-            }
-        };
-    }
-}
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/consumers/MultipleMessagesSameTopicIT.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/consumers/MultipleMessagesSameTopicIT.java
new file mode 100644
index 00000000000..2ff59fe3de7
--- /dev/null
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/consumers/MultipleMessagesSameTopicIT.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.camel.component.jms.integration.consumers;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.jms.AbstractPersistentJMSTest;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.awaitility.Awaitility;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+/**
+ * Tests the behavior of 2 consumers consuming multiple messages from the topic
+ */
+public class MultipleMessagesSameTopicIT extends AbstractPersistentJMSTest {
+
+    @Test
+    public void testMultipleMessagesOnSameTopic() throws Exception {
+        getMockEndpoint("mock:a").expectedBodiesReceived("Hello Camel 1", "Hello Camel 2", "Hello Camel 3",
+                "Hello Camel 4");
+        getMockEndpoint("mock:b").expectedBodiesReceived("Hello Camel 1", "Hello Camel 2", "Hello Camel 3",
+                "Hello Camel 4");
+
+        template.sendBody("activemq:topic:MultipleMessagesSameTopicIT", "Hello Camel 1");
+        template.sendBody("activemq:topic:MultipleMessagesSameTopicIT", "Hello Camel 2");
+        template.sendBody("activemq:topic:MultipleMessagesSameTopicIT", "Hello Camel 3");
+        template.sendBody("activemq:topic:MultipleMessagesSameTopicIT", "Hello Camel 4");
+
+        MockEndpoint.assertIsSatisfied(context);
+    }
+
+    @BeforeEach
+    void waitForConnections() {
+        Awaitility.await().until(() -> context.getRoute("a").getUptimeMillis() > 200);
+        Awaitility.await().until(() -> context.getRoute("b").getUptimeMillis() > 200);
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() {
+        return new RouteBuilder() {
+            @Override
+            public void configure() {
+                from("activemq:topic:MultipleMessagesSameTopicIT").routeId("a")
+                        .to("log:a", "mock:a");
+
+                from("activemq:topic:MultipleMessagesSameTopicIT").routeId("b")
+                        .to("log:b", "mock:b");
+            }
+        };
+    }
+}
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/consumers/SingleMessageSameTopicIT.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/consumers/SingleMessageSameTopicIT.java
new file mode 100644
index 00000000000..af5e162603d
--- /dev/null
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/consumers/SingleMessageSameTopicIT.java
@@ -0,0 +1,110 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.jms.integration.consumers;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.jms.AbstractPersistentJMSTest;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.awaitility.Awaitility;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+public class SingleMessageSameTopicIT extends AbstractPersistentJMSTest {
+
+    @BeforeEach
+    void prepare() {
+        getMockEndpoint("mock:a").expectedBodiesReceived("Hello World");
+        getMockEndpoint("mock:b").expectedBodiesReceived("Hello World");
+
+        template.sendBody("activemq:topic:SingleMessageSameTopicIT", "Hello World");
+    }
+
+    @Test
+    void testTwoConsumerOnSameTopic() throws Exception {
+        MockEndpoint.assertIsSatisfied(context);
+    }
+
+    @Test
+    void testStopAndStartOneRoute() throws Exception {
+        MockEndpoint.assertIsSatisfied(context);
+
+        // now stop route A
+        context.getRouteController().stopRoute("a");
+
+        // send a new message should go to B only
+        MockEndpoint.resetMocks(context);
+
+        getMockEndpoint("mock:a").expectedMessageCount(0);
+        getMockEndpoint("mock:b").expectedBodiesReceived("Bye World");
+
+        template.sendBody("activemq:topic:SingleMessageSameTopicIT", "Bye World");
+
+        MockEndpoint.assertIsSatisfied(context);
+
+        // send new message should go to both A and B
+        MockEndpoint.resetMocks(context);
+
+        // now start route A
+        context.getRouteController().startRoute("a");
+
+        getMockEndpoint("mock:a").expectedBodiesReceived("Hello World");
+        getMockEndpoint("mock:b").expectedBodiesReceived("Hello World");
+
+        template.sendBody("activemq:topic:SingleMessageSameTopicIT", "Hello World");
+    }
+
+    @Test
+    void testRemoveOneRoute() throws Exception {
+        MockEndpoint.assertIsSatisfied(context);
+
+        // now stop and remove route A
+        context.getRouteController().stopRoute("a");
+        assertTrue(context.removeRoute("a"));
+
+        // send new message should go to B only
+        MockEndpoint.resetMocks(context);
+
+        getMockEndpoint("mock:a").expectedMessageCount(0);
+        getMockEndpoint("mock:b").expectedBodiesReceived("Bye World");
+
+        template.sendBody("activemq:topic:SingleMessageSameTopicIT", "Bye World");
+
+        MockEndpoint.assertIsSatisfied(context);
+    }
+
+    @BeforeEach
+    void waitForConnections() {
+        Awaitility.await().until(() -> context.getRoute("a").getUptimeMillis() > 200);
+        Awaitility.await().until(() -> context.getRoute("b").getUptimeMillis() > 200);
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() {
+        return new RouteBuilder() {
+            @Override
+            public void configure() {
+                from("activemq:topic:SingleMessageSameTopicIT").routeId("a")
+                        .to("log:a", "mock:a");
+
+                from("activemq:topic:SingleMessageSameTopicIT").routeId("b")
+                        .to("log:b", "mock:b");
+            }
+        };
+    }
+}


(camel) 01/04: CAMEL-20447: fix SjmsComponentRestartTest test due to lifecycle requirements

Posted by or...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit dcfbe87142398e07e145274123bc8a89ee58a06a
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Wed Mar 13 10:10:05 2024 +0100

    CAMEL-20447: fix SjmsComponentRestartTest test due to lifecycle requirements
---
 .../component/sjms/SjmsComponentRestartTest.java   | 22 +++++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)

diff --git a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/SjmsComponentRestartTest.java b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/SjmsComponentRestartTest.java
index 11a81f0c16a..16a7baccb90 100644
--- a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/SjmsComponentRestartTest.java
+++ b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/SjmsComponentRestartTest.java
@@ -23,17 +23,33 @@ import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.infra.artemis.services.ArtemisService;
 import org.apache.camel.test.infra.artemis.services.ArtemisServiceFactory;
 import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.RegisterExtension;
 
 public class SjmsComponentRestartTest extends CamelTestSupport {
 
-    @RegisterExtension
-    public ArtemisService service = ArtemisServiceFactory.createSingletonVMService();
+    /*
+     * This one needs a custom lifecycle due to binding to registry via @BindToRegistry.
+     * The broker needs to be started earlier than usual.
+     */
+    public static ArtemisService service;
+
     @BindToRegistry("activemqCF")
     private ActiveMQConnectionFactory connectionFactory
             = new ActiveMQConnectionFactory(service.serviceAddress());
 
+    static {
+        service = ArtemisServiceFactory.createVMService();
+        service.initialize();
+    }
+
+    @AfterAll
+    public static void shutdownBroker() {
+        if (service != null) {
+            service.shutdown();
+        }
+    }
+
     @Override
     protected boolean useJmx() {
         return false;


(camel) 03/04: CAMEL-20477: make the shared topic test an integration test for consistency

Posted by or...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 320356405383cf38d6ebc262e71dc05c252ba902
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Wed Mar 13 11:05:07 2024 +0100

    CAMEL-20477: make the shared topic test an integration test for consistency
---
 .../consumers/TwoConsumerOnSameQueueIT.java}                          | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/TwoConsumerOnSameQueueTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/consumers/TwoConsumerOnSameQueueIT.java
similarity index 98%
rename from components/camel-jms/src/test/java/org/apache/camel/component/jms/TwoConsumerOnSameQueueTest.java
rename to components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/consumers/TwoConsumerOnSameQueueIT.java
index 10b86619e6a..77f5d477db0 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/TwoConsumerOnSameQueueTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/consumers/TwoConsumerOnSameQueueIT.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.component.jms;
+package org.apache.camel.component.jms.integration.consumers;
 
 import java.util.concurrent.TimeUnit;
 
@@ -44,7 +44,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 
 @Tags({ @Tag("not-parallel") })
 @TestInstance(TestInstance.Lifecycle.PER_METHOD)
-public class TwoConsumerOnSameQueueTest extends CamelTestSupport {
+public class TwoConsumerOnSameQueueIT extends CamelTestSupport {
 
     @RegisterExtension
     public static ArtemisService service = ArtemisServiceFactory.createVMService();


(camel) 04/04: CAMEL-20477: adjust Artemis service to reduce broker recycling

Posted by or...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 9a87a3d467d5d8de8c3e5d3b10b50df36d12570b
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Wed Mar 13 12:47:55 2024 +0100

    CAMEL-20477: adjust Artemis service to reduce broker recycling
    
    Previously, the broker would be recycled after every test. However, this is unnecessary now that the tests use separate resources.
---
 .../component/jms/JmsAsyncStartStopListenerTest.java |  2 +-
 .../jms/JmsDefaultTaskExecutorTypeTest.java          |  2 +-
 ...msRequestReplyTempQueueMultipleConsumersTest.java |  2 +-
 .../jms/integration/JmsLoadBalanceFailOverIT.java    |  2 +-
 ...eadLetterChannelHandlerRollbackOnExceptionIT.java |  2 +-
 .../component/jms/tx/TransactedOnCompletionTest.java |  2 +-
 .../sjms/consumer/InOutConsumerQueueAsyncTest.java   | 20 ++++++++++++++++++--
 .../sjms/producer/QueueProducerQoSTest.java          |  2 +-
 .../component/sjms/support/JmsCommonTestSupport.java |  2 +-
 .../sjms/tx/TransactedConcurrentConsumersTest.java   |  6 ++++++
 .../component/sjms/tx/TransactedConsumerSupport.java |  6 ------
 .../tx/TransactedConsumersMultipleRouteTest.java     |  6 ++++++
 .../sjms/tx/TransactedQueueConsumerTest.java         |  6 ++++++
 .../sjms/tx/TransactedTopicConsumerTest.java         |  6 ++++++
 .../component/sjms2/SimpleJms2ComponentTest.java     |  2 +-
 .../sjms2/Sjms2EndpointNameOverrideTest.java         |  2 +-
 .../camel/component/sjms2/Sjms2EndpointTest.java     |  2 +-
 .../consumer/InOnlyTopicDurableConsumerTest.java     | 11 +++++++++++
 .../consumer/InOnlyTopicSharedConsumerTest.java      | 11 +++++++++++
 .../sjms2/producer/InOnlyQueueProducerTest.java      | 10 ++++++++++
 .../sjms2/producer/InOnlyTopicProducerTest.java      | 10 ++++++++++
 .../sjms2/producer/Sjms2ToDSendDynamicTest.java      | 11 +++++++++++
 .../component/sjms2/support/Jms2TestSupport.java     | 16 ++++++----------
 .../apache/camel/component/stomp/StompBaseTest.java  |  6 +++---
 .../test/infra/artemis/services/ArtemisService.java  | 10 +++++-----
 .../artemis/services/ArtemisServiceFactory.java      |  4 ++--
 26 files changed, 122 insertions(+), 39 deletions(-)

diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsAsyncStartStopListenerTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsAsyncStartStopListenerTest.java
index 1d8e05699fa..88b41be0396 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsAsyncStartStopListenerTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsAsyncStartStopListenerTest.java
@@ -40,7 +40,7 @@ import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknow
 @Timeout(30)
 public class JmsAsyncStartStopListenerTest extends CamelTestSupport {
     @RegisterExtension
-    public ArtemisService service = ArtemisServiceFactory.createPersistentVMService();
+    public static ArtemisService service = ArtemisServiceFactory.createPersistentVMService();
 
     protected final String componentName = "activemq";
 
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDefaultTaskExecutorTypeTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDefaultTaskExecutorTypeTest.java
index 2710dc181c5..f7071976ecc 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDefaultTaskExecutorTypeTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsDefaultTaskExecutorTypeTest.java
@@ -57,7 +57,7 @@ class JmsDefaultTaskExecutorTypeTest extends CamelTestSupport {
     private static final Logger LOG = LoggerFactory.getLogger(JmsDefaultTaskExecutorTypeTest.class);
 
     @RegisterExtension
-    public ArtemisService service = ArtemisServiceFactory.createPersistentVMService();
+    public static ArtemisService service = ArtemisServiceFactory.createPersistentVMService();
 
     @Test
     void testThreadPoolTaskExecutor() throws Exception {
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRequestReplyTempQueueMultipleConsumersTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRequestReplyTempQueueMultipleConsumersTest.java
index 3c31fb0b28c..bbdc6b4503c 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRequestReplyTempQueueMultipleConsumersTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRequestReplyTempQueueMultipleConsumersTest.java
@@ -49,7 +49,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 public class JmsRequestReplyTempQueueMultipleConsumersTest extends CamelTestSupport {
 
     @RegisterExtension
-    public ArtemisService service = ArtemisServiceFactory.createVMService();
+    public static ArtemisService service = ArtemisServiceFactory.createVMService();
 
     private final Map<String, AtomicInteger> msgsPerThread = new ConcurrentHashMap<>();
     private JmsPoolConnectionFactory connectionFactory;
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/JmsLoadBalanceFailOverIT.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/JmsLoadBalanceFailOverIT.java
index 8208be8ba5c..7e66ab0d17f 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/JmsLoadBalanceFailOverIT.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/JmsLoadBalanceFailOverIT.java
@@ -40,7 +40,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class JmsLoadBalanceFailOverIT extends CamelTestSupport {
 
     @RegisterExtension
-    public ArtemisService service = ArtemisServiceFactory.createVMService();
+    public static ArtemisService service = ArtemisServiceFactory.createVMService();
 
     @BeforeEach
     void configureTest() {
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/tx/JmsTransactedDeadLetterChannelHandlerRollbackOnExceptionIT.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/tx/JmsTransactedDeadLetterChannelHandlerRollbackOnExceptionIT.java
index e2ab046e885..0345d2f4133 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/tx/JmsTransactedDeadLetterChannelHandlerRollbackOnExceptionIT.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/integration/tx/JmsTransactedDeadLetterChannelHandlerRollbackOnExceptionIT.java
@@ -40,7 +40,7 @@ import static org.junit.jupiter.api.Assertions.assertNull;
 @Tags({ @Tag("not-parallel"), @Tag("transaction") })
 public class JmsTransactedDeadLetterChannelHandlerRollbackOnExceptionIT extends CamelTestSupport {
     @RegisterExtension
-    public ArtemisService service = ArtemisServiceFactory.createVMService();
+    public static ArtemisService service = ArtemisServiceFactory.createVMService();
 
     public static class BadErrorHandler {
         @Handler
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/TransactedOnCompletionTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/TransactedOnCompletionTest.java
index 496b2110add..93d796268ee 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/TransactedOnCompletionTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/TransactedOnCompletionTest.java
@@ -32,7 +32,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
 public class TransactedOnCompletionTest extends CamelTestSupport {
 
     @RegisterExtension
-    public ArtemisService service = ArtemisServiceFactory.createVMService();
+    public static ArtemisService service = ArtemisServiceFactory.createVMService();
 
     @Produce
     protected ProducerTemplate template;
diff --git a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOutConsumerQueueAsyncTest.java b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOutConsumerQueueAsyncTest.java
index 33a323d381c..5aeb3b9898f 100644
--- a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOutConsumerQueueAsyncTest.java
+++ b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/consumer/InOutConsumerQueueAsyncTest.java
@@ -16,15 +16,22 @@
  */
 package org.apache.camel.component.sjms.consumer;
 
+import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.component.sjms.support.JmsTestSupport;
+import org.apache.camel.component.sjms.support.JmsCommonTestSupport;
+import org.apache.camel.test.infra.artemis.services.ArtemisService;
+import org.apache.camel.test.infra.artemis.services.ArtemisServiceFactory;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
-public class InOutConsumerQueueAsyncTest extends JmsTestSupport {
+public class InOutConsumerQueueAsyncTest extends JmsCommonTestSupport {
+
+    @RegisterExtension
+    public static ArtemisService service = ArtemisServiceFactory.createVMService();
 
     @Test
     public void testAsync() throws Exception {
@@ -61,4 +68,13 @@ public class InOutConsumerQueueAsyncTest extends JmsTestSupport {
         };
     }
 
+    @Override
+    protected String getBrokerUri() {
+        return service.serviceAddress();
+    }
+
+    @Override
+    protected void setupFactoryExternal(ActiveMQConnectionFactory factory) {
+        setupFactoryExternal(factory, service);
+    }
 }
diff --git a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/producer/QueueProducerQoSTest.java b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/producer/QueueProducerQoSTest.java
index ce2fb1c8e92..de971ad5824 100644
--- a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/producer/QueueProducerQoSTest.java
+++ b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/producer/QueueProducerQoSTest.java
@@ -51,7 +51,7 @@ public class QueueProducerQoSTest extends CamelTestSupport {
     private static final String MOCK_EXPIRED_ADVISORY = "mock:expiredAdvisory";
 
     @RegisterExtension
-    public ArtemisService service = new ArtemisEmbeddedServiceBuilder()
+    public static ArtemisService service = new ArtemisEmbeddedServiceBuilder()
             .withPersistent(true)
             .withCustomConfiguration(configuration -> configureArtemis(configuration))
             .build();
diff --git a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/support/JmsCommonTestSupport.java b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/support/JmsCommonTestSupport.java
index 0e0e54a772a..dcfd865067a 100644
--- a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/support/JmsCommonTestSupport.java
+++ b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/support/JmsCommonTestSupport.java
@@ -46,7 +46,7 @@ import static org.apache.camel.test.junit5.TestSupport.deleteDirectory;
 /**
  * A support class that builds up and tears down an ActiveMQ instance to be used for unit testing.
  */
-abstract class JmsCommonTestSupport extends CamelTestSupport {
+public abstract class JmsCommonTestSupport extends CamelTestSupport {
 
     protected final Logger log = LoggerFactory.getLogger(getClass());
 
diff --git a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/tx/TransactedConcurrentConsumersTest.java b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/tx/TransactedConcurrentConsumersTest.java
index 20a01ee4549..f162dfcaeaa 100644
--- a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/tx/TransactedConcurrentConsumersTest.java
+++ b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/tx/TransactedConcurrentConsumersTest.java
@@ -16,13 +16,19 @@
  */
 package org.apache.camel.component.sjms.tx;
 
+import org.apache.camel.test.infra.artemis.services.ArtemisService;
+import org.apache.camel.test.infra.artemis.services.ArtemisServiceFactory;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 /**
  * Test to verify concurrent consumers on a transacted endpoint.
  */
 public class TransactedConcurrentConsumersTest extends TransactedConsumerSupport {
 
+    @RegisterExtension
+    protected static ArtemisService service = ArtemisServiceFactory.createVMService();
+
     /**
      * We want to verify that when consuming from a single destination with multiple routes that we are thread safe and
      * behave accordingly.
diff --git a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/tx/TransactedConsumerSupport.java b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/tx/TransactedConsumerSupport.java
index 8c2c312df71..7f5ec842dbe 100644
--- a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/tx/TransactedConsumerSupport.java
+++ b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/tx/TransactedConsumerSupport.java
@@ -27,10 +27,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.component.sjms.SjmsComponent;
-import org.apache.camel.test.infra.artemis.services.ArtemisService;
-import org.apache.camel.test.infra.artemis.services.ArtemisServiceFactory;
 import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.extension.RegisterExtension;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -38,9 +35,6 @@ public abstract class TransactedConsumerSupport extends CamelTestSupport {
 
     protected final Logger log = LoggerFactory.getLogger(getClass());
 
-    @RegisterExtension
-    protected ArtemisService service = ArtemisServiceFactory.createVMService();
-
     public abstract String getBrokerUri();
 
     protected void runTest(
diff --git a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/tx/TransactedConsumersMultipleRouteTest.java b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/tx/TransactedConsumersMultipleRouteTest.java
index dbe825f0335..c14d9dc89e9 100644
--- a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/tx/TransactedConsumersMultipleRouteTest.java
+++ b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/tx/TransactedConsumersMultipleRouteTest.java
@@ -16,8 +16,11 @@
  */
 package org.apache.camel.component.sjms.tx;
 
+import org.apache.camel.test.infra.artemis.services.ArtemisService;
+import org.apache.camel.test.infra.artemis.services.ArtemisServiceFactory;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 /**
  * Test to verify concurrent consumers on a transacted endpoint.
@@ -25,6 +28,9 @@ import org.junit.jupiter.api.Test;
 @Disabled("Works only in isolation")
 public class TransactedConsumersMultipleRouteTest extends TransactedConsumerSupport {
 
+    @RegisterExtension
+    protected static ArtemisService service = ArtemisServiceFactory.createVMService();
+
     /**
      * We want to verify that when consuming from a single destination with multiple routes that we are thread safe and
      * behave accordingly.
diff --git a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/tx/TransactedQueueConsumerTest.java b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/tx/TransactedQueueConsumerTest.java
index ae3bbb9eeef..880772a9c09 100644
--- a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/tx/TransactedQueueConsumerTest.java
+++ b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/tx/TransactedQueueConsumerTest.java
@@ -16,10 +16,16 @@
  */
 package org.apache.camel.component.sjms.tx;
 
+import org.apache.camel.test.infra.artemis.services.ArtemisService;
+import org.apache.camel.test.infra.artemis.services.ArtemisServiceFactory;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 public class TransactedQueueConsumerTest extends TransactedConsumerSupport {
 
+    @RegisterExtension
+    protected static ArtemisService service = ArtemisServiceFactory.createVMService();
+
     /**
      * We want to verify that when consuming from a single destination with multiple routes that we are thread safe and
      * behave accordingly.
diff --git a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/tx/TransactedTopicConsumerTest.java b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/tx/TransactedTopicConsumerTest.java
index 689d1f57f05..6c613f9d6ab 100644
--- a/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/tx/TransactedTopicConsumerTest.java
+++ b/components/camel-sjms/src/test/java/org/apache/camel/component/sjms/tx/TransactedTopicConsumerTest.java
@@ -16,10 +16,16 @@
  */
 package org.apache.camel.component.sjms.tx;
 
+import org.apache.camel.test.infra.artemis.services.ArtemisService;
+import org.apache.camel.test.infra.artemis.services.ArtemisServiceFactory;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 public class TransactedTopicConsumerTest extends TransactedConsumerSupport {
 
+    @RegisterExtension
+    protected static ArtemisService service = ArtemisServiceFactory.createVMService();
+
     /**
      * We want to verify that when consuming from a single destination with multiple routes that we are thread safe and
      * behave accordingly.
diff --git a/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/SimpleJms2ComponentTest.java b/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/SimpleJms2ComponentTest.java
index e373c0f7040..3adfb61e79c 100644
--- a/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/SimpleJms2ComponentTest.java
+++ b/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/SimpleJms2ComponentTest.java
@@ -29,7 +29,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
 public class SimpleJms2ComponentTest extends CamelTestSupport {
 
     @RegisterExtension
-    public ArtemisService service = ArtemisServiceFactory.createVMService();
+    public static ArtemisService service = ArtemisServiceFactory.createVMService();
 
     @Test
     public void testHelloWorld() {
diff --git a/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/Sjms2EndpointNameOverrideTest.java b/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/Sjms2EndpointNameOverrideTest.java
index 9d2bacdd56e..39f537d57f9 100644
--- a/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/Sjms2EndpointNameOverrideTest.java
+++ b/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/Sjms2EndpointNameOverrideTest.java
@@ -35,7 +35,7 @@ public class Sjms2EndpointNameOverrideTest extends CamelTestSupport {
     private static final String BEAN_NAME = "not-sjms";
 
     @RegisterExtension
-    public ArtemisService service = ArtemisServiceFactory.createVMService();
+    public static ArtemisService service = ArtemisServiceFactory.createVMService();
 
     @Override
     protected boolean useJmx() {
diff --git a/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/Sjms2EndpointTest.java b/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/Sjms2EndpointTest.java
index ac3ac678785..86512e141f8 100644
--- a/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/Sjms2EndpointTest.java
+++ b/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/Sjms2EndpointTest.java
@@ -35,7 +35,7 @@ import static org.junit.jupiter.api.Assertions.fail;
 public class Sjms2EndpointTest extends CamelTestSupport {
 
     @RegisterExtension
-    public ArtemisService service = ArtemisServiceFactory.createVMService();
+    public static ArtemisService service = ArtemisServiceFactory.createVMService();
 
     @Override
     protected boolean useJmx() {
diff --git a/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/consumer/InOnlyTopicDurableConsumerTest.java b/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/consumer/InOnlyTopicDurableConsumerTest.java
index ed0fcc47122..8470bedd66c 100644
--- a/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/consumer/InOnlyTopicDurableConsumerTest.java
+++ b/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/consumer/InOnlyTopicDurableConsumerTest.java
@@ -16,17 +16,24 @@
  */
 package org.apache.camel.component.sjms2.consumer;
 
+import jakarta.jms.ConnectionFactory;
+
 import org.apache.camel.CamelContext;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.component.sjms2.Sjms2Component;
 import org.apache.camel.component.sjms2.support.Jms2TestSupport;
+import org.apache.camel.test.infra.artemis.services.ArtemisService;
+import org.apache.camel.test.infra.artemis.services.ArtemisServiceFactory;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 import org.messaginghub.pooled.jms.JmsPoolConnectionFactory;
 
 public class InOnlyTopicDurableConsumerTest extends Jms2TestSupport {
 
     private static final String CONNECTION_ID = "test-connection-1";
+    @RegisterExtension
+    public static ArtemisService service = ArtemisServiceFactory.createTCPAllProtocolsService();
 
     @Override
     protected boolean useJmx() {
@@ -76,4 +83,8 @@ public class InOnlyTopicDurableConsumerTest extends Jms2TestSupport {
             }
         };
     }
+
+    protected ConnectionFactory getConnectionFactory() throws Exception {
+        return getConnectionFactory(service.serviceAddress());
+    }
 }
diff --git a/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/consumer/InOnlyTopicSharedConsumerTest.java b/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/consumer/InOnlyTopicSharedConsumerTest.java
index 1993ec7df44..e03d8fba9ac 100644
--- a/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/consumer/InOnlyTopicSharedConsumerTest.java
+++ b/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/consumer/InOnlyTopicSharedConsumerTest.java
@@ -16,14 +16,21 @@
  */
 package org.apache.camel.component.sjms2.consumer;
 
+import jakarta.jms.ConnectionFactory;
+
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.component.sjms2.support.Jms2TestSupport;
+import org.apache.camel.test.infra.artemis.services.ArtemisService;
+import org.apache.camel.test.infra.artemis.services.ArtemisServiceFactory;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 public class InOnlyTopicSharedConsumerTest extends Jms2TestSupport {
 
     private static final String TEST_DESTINATION_NAME = "sjms2:topic:in.only.topic.consumer.test";
+    @RegisterExtension
+    public static ArtemisService service = ArtemisServiceFactory.createTCPAllProtocolsService();
 
     @Override
     protected boolean useJmx() {
@@ -64,4 +71,8 @@ public class InOnlyTopicSharedConsumerTest extends Jms2TestSupport {
             }
         };
     }
+
+    protected ConnectionFactory getConnectionFactory() throws Exception {
+        return getConnectionFactory(service.serviceAddress());
+    }
 }
diff --git a/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/producer/InOnlyQueueProducerTest.java b/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/producer/InOnlyQueueProducerTest.java
index d9c0afe962d..8b0cb55110c 100644
--- a/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/producer/InOnlyQueueProducerTest.java
+++ b/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/producer/InOnlyQueueProducerTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.sjms2.producer;
 
+import jakarta.jms.ConnectionFactory;
 import jakarta.jms.Message;
 import jakarta.jms.MessageConsumer;
 import jakarta.jms.TextMessage;
@@ -24,7 +25,10 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.component.sjms.SjmsConstants;
 import org.apache.camel.component.sjms2.support.Jms2TestSupport;
+import org.apache.camel.test.infra.artemis.services.ArtemisService;
+import org.apache.camel.test.infra.artemis.services.ArtemisServiceFactory;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -32,6 +36,8 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 public class InOnlyQueueProducerTest extends Jms2TestSupport {
 
     private static final String TEST_DESTINATION_NAME = "sync.queue.producer.test";
+    @RegisterExtension
+    public static ArtemisService service = ArtemisServiceFactory.createTCPAllProtocolsService();
 
     @Test
     public void testInOnlyQueueProducer() throws Exception {
@@ -97,4 +103,8 @@ public class InOnlyQueueProducerTest extends Jms2TestSupport {
             }
         };
     }
+
+    protected ConnectionFactory getConnectionFactory() throws Exception {
+        return getConnectionFactory(service.serviceAddress());
+    }
 }
diff --git a/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/producer/InOnlyTopicProducerTest.java b/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/producer/InOnlyTopicProducerTest.java
index a141643c727..9d79b6f3031 100644
--- a/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/producer/InOnlyTopicProducerTest.java
+++ b/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/producer/InOnlyTopicProducerTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.sjms2.producer;
 
+import jakarta.jms.ConnectionFactory;
 import jakarta.jms.Message;
 import jakarta.jms.MessageConsumer;
 import jakarta.jms.TextMessage;
@@ -23,7 +24,10 @@ import jakarta.jms.TextMessage;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.component.sjms2.support.Jms2TestSupport;
+import org.apache.camel.test.infra.artemis.services.ArtemisService;
+import org.apache.camel.test.infra.artemis.services.ArtemisServiceFactory;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -31,6 +35,8 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 public class InOnlyTopicProducerTest extends Jms2TestSupport {
 
     private static final String TEST_DESTINATION_NAME = "test.foo.topic";
+    @RegisterExtension
+    public static ArtemisService service = ArtemisServiceFactory.createTCPAllProtocolsService();
 
     public InOnlyTopicProducerTest() {
     }
@@ -83,4 +89,8 @@ public class InOnlyTopicProducerTest extends Jms2TestSupport {
             }
         };
     }
+
+    protected ConnectionFactory getConnectionFactory() throws Exception {
+        return getConnectionFactory(service.serviceAddress());
+    }
 }
diff --git a/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/producer/Sjms2ToDSendDynamicTest.java b/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/producer/Sjms2ToDSendDynamicTest.java
index a2236417860..cbd4fcd3d44 100644
--- a/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/producer/Sjms2ToDSendDynamicTest.java
+++ b/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/producer/Sjms2ToDSendDynamicTest.java
@@ -16,14 +16,22 @@
  */
 package org.apache.camel.component.sjms2.producer;
 
+import jakarta.jms.ConnectionFactory;
+
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.sjms2.support.Jms2TestSupport;
+import org.apache.camel.test.infra.artemis.services.ArtemisService;
+import org.apache.camel.test.infra.artemis.services.ArtemisServiceFactory;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class Sjms2ToDSendDynamicTest extends Jms2TestSupport {
 
+    @RegisterExtension
+    public static ArtemisService service = ArtemisServiceFactory.createTCPAllProtocolsService();
+
     @Test
     public void testToD() {
         template.sendBodyAndHeader("direct:start", "Hello bar", "where", "bar");
@@ -51,4 +59,7 @@ public class Sjms2ToDSendDynamicTest extends Jms2TestSupport {
         };
     }
 
+    protected ConnectionFactory getConnectionFactory() throws Exception {
+        return getConnectionFactory(service.serviceAddress());
+    }
 }
diff --git a/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/support/Jms2TestSupport.java b/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/support/Jms2TestSupport.java
index bfc8e859831..257e5f9b4bc 100644
--- a/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/support/Jms2TestSupport.java
+++ b/components/camel-sjms2/src/test/java/org/apache/camel/component/sjms2/support/Jms2TestSupport.java
@@ -31,20 +31,14 @@ import org.apache.camel.component.sjms.jms.DestinationCreationStrategy;
 import org.apache.camel.component.sjms2.Sjms2Component;
 import org.apache.camel.component.sjms2.jms.Jms2ObjectFactory;
 import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.test.infra.artemis.services.ArtemisService;
-import org.apache.camel.test.infra.artemis.services.ArtemisServiceFactory;
 import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.extension.RegisterExtension;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
  * A support class that builds up and tears down an ActiveMQ Artemis instance to be used for unit testing.
  */
-public class Jms2TestSupport extends CamelTestSupport {
-
-    @RegisterExtension
-    public ArtemisService service = ArtemisServiceFactory.createTCPAllProtocolsService();
+public abstract class Jms2TestSupport extends CamelTestSupport {
 
     protected final Logger log = LoggerFactory.getLogger(getClass());
 
@@ -96,7 +90,7 @@ public class Jms2TestSupport extends CamelTestSupport {
         return camelContext;
     }
 
-    protected ConnectionFactory getConnectionFactory() throws Exception {
+    protected static ConnectionFactory getConnectionFactory(String serviceAddress) throws Exception {
         final String protocol = System.getProperty("protocol", "CORE").toUpperCase();
 
         //Currently AMQP and HORENTQ don't operate in exactly the same way on artemis as OPENWIRE
@@ -104,12 +98,14 @@ public class Jms2TestSupport extends CamelTestSupport {
         //of artemis we may be able test against them in an agnostic way.
         switch (protocol) {
             case "OPENWIRE":
-                return new ActiveMQConnectionFactory(service.serviceAddress());
+                return new ActiveMQConnectionFactory(serviceAddress);
             default:
-                return ActiveMQJMSClient.createConnectionFactory(service.serviceAddress(), "test");
+                return ActiveMQJMSClient.createConnectionFactory(serviceAddress, "test");
         }
     }
 
+    protected abstract ConnectionFactory getConnectionFactory() throws Exception;
+
     public void setSession(Session session) {
         this.session = session;
     }
diff --git a/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompBaseTest.java b/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompBaseTest.java
index f1ad9fa3235..fe079daacb3 100644
--- a/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompBaseTest.java
+++ b/components/camel-stomp/src/test/java/org/apache/camel/component/stomp/StompBaseTest.java
@@ -36,11 +36,11 @@ import org.junit.jupiter.api.extension.RegisterExtension;
 public abstract class StompBaseTest extends CamelTestSupport {
 
     protected int numberOfMessages = 100;
-    int sslServicePort = AvailablePortFinder.getNextAvailable();
-    int servicePort = AvailablePortFinder.getNextAvailable();
+    static int sslServicePort = AvailablePortFinder.getNextAvailable();
+    static int servicePort = AvailablePortFinder.getNextAvailable();
 
     @RegisterExtension
-    public ArtemisService service = new ArtemisEmbeddedServiceBuilder()
+    public static ArtemisService service = new ArtemisEmbeddedServiceBuilder()
             .withCustomConfiguration(configuration -> {
                 try {
                     configuration.setJMXManagementEnabled(true);
diff --git a/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisService.java b/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisService.java
index 6de555cf90f..3782a50ecaa 100644
--- a/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisService.java
+++ b/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisService.java
@@ -20,11 +20,11 @@ import org.apache.activemq.artemis.core.server.QueueQueryResult;
 import org.apache.camel.test.infra.artemis.common.ArtemisProperties;
 import org.apache.camel.test.infra.common.services.TestService;
 import org.apache.camel.test.infra.common.services.TestServiceUtil;
-import org.junit.jupiter.api.extension.AfterEachCallback;
-import org.junit.jupiter.api.extension.BeforeEachCallback;
+import org.junit.jupiter.api.extension.AfterAllCallback;
+import org.junit.jupiter.api.extension.BeforeAllCallback;
 import org.junit.jupiter.api.extension.ExtensionContext;
 
-public interface ArtemisService extends BeforeEachCallback, AfterEachCallback, TestService {
+public interface ArtemisService extends AfterAllCallback, BeforeAllCallback, TestService {
 
     String serviceAddress();
 
@@ -43,12 +43,12 @@ public interface ArtemisService extends BeforeEachCallback, AfterEachCallback, T
     }
 
     @Override
-    default void afterEach(ExtensionContext extensionContext) throws Exception {
+    default void afterAll(ExtensionContext extensionContext) throws Exception {
         TestServiceUtil.tryShutdown(this, extensionContext);
     }
 
     @Override
-    default void beforeEach(ExtensionContext extensionContext) throws Exception {
+    default void beforeAll(ExtensionContext extensionContext) throws Exception {
         TestServiceUtil.tryInitialize(this, extensionContext);
     }
 
diff --git a/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisServiceFactory.java b/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisServiceFactory.java
index 3c4675d3189..9fdc3c9ffd4 100644
--- a/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisServiceFactory.java
+++ b/test-infra/camel-test-infra-artemis/src/test/java/org/apache/camel/test/infra/artemis/services/ArtemisServiceFactory.java
@@ -74,12 +74,12 @@ public final class ArtemisServiceFactory {
         }
 
         @Override
-        public void afterEach(ExtensionContext extensionContext) {
+        public void afterAll(ExtensionContext extensionContext) {
             // NO-OP
         }
 
         @Override
-        public void beforeEach(ExtensionContext extensionContext) {
+        public void beforeAll(ExtensionContext extensionContext) {
             addToStore(extensionContext);
         }
     }