You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2021/02/03 18:03:33 UTC

[activemq-artemis] branch master updated: [ARTEMIS-3080]: Provide JakartaEE 9 artefacts.

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

clebertsuconic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git


The following commit(s) were added to refs/heads/master by this push:
     new 40f4c02  [ARTEMIS-3080]: Provide JakartaEE 9 artefacts.
     new 95e65b8  This closes #3421
40f4c02 is described below

commit 40f4c0218ea64683f6cd029bbd3fa4e71fd67d2e
Author: Emmanuel Hugonnet <eh...@redhat.com>
AuthorDate: Wed Feb 3 18:33:12 2021 +0100

    [ARTEMIS-3080]: Provide JakartaEE 9 artefacts.
    
    * using batavia and eclipse transformer to transform JMS code to JakartaEE.
    * adding a test with JakartaEE
    * upgrading owasp plugin to 6.1.0
    
    Jira: https://issues.apache.org/jira/browse/ARTEMIS-3080
---
 artemis-jakarta-client/pom.xml                     | 94 ++++++++++++++++++++++
 .../src/main/resources/jms-version.properties      | 19 +++++
 artemis-jakarta-ra/pom.xml                         | 72 +++++++++++++++++
 .../src/main/resources/jms-version.properties      | 19 +++++
 artemis-jakarta-server/pom.xml                     | 71 ++++++++++++++++
 artemis-jakarta-service-extensions/pom.xml         | 71 ++++++++++++++++
 .../jms/client/ActiveMQConnectionMetaData.java     | 28 ++++++-
 .../src/main/resources/jms-version.properties      | 19 +++++
 .../artemis/ra/ActiveMQRAConnectionMetaData.java   | 30 +++++--
 .../src/main/resources/jms-version.properties      | 19 +++++
 pom.xml                                            | 58 ++++++++++++-
 tests/compatibility-tests/pom.xml                  | 32 ++++++++
 .../artemis/tests/compatibility/GroovyRun.java     |  1 +
 .../jakartaReplyToQueue/receiveMessages.groovy     | 53 ++++++++++++
 .../jakartaReplyToQueue/sendMessagesAddress.groovy | 52 ++++++++++++
 .../jakartaReplyToTempQueue/receiveMessages.groovy | 53 ++++++++++++
 .../sendMessagesAddress.groovy                     | 52 ++++++++++++
 .../jakartaReplyToTempTopic/receiveMessages.groovy | 59 ++++++++++++++
 .../sendMessagesAddress.groovy                     | 68 ++++++++++++++++
 .../jakartaReplyToTopic/receiveMessages.groovy     | 53 ++++++++++++
 .../jakartaReplyToTopic/sendMessagesAddress.groovy | 52 ++++++++++++
 .../tests/compatibility/JmsReplyToQueueTest.java   | 20 ++++-
 .../compatibility/JmsReplyToTempQueueTest.java     | 19 ++++-
 .../compatibility/JmsReplyToTempTopicTest.java     | 19 ++++-
 .../tests/compatibility/JmsReplyToTopicTest.java   | 19 ++++-
 25 files changed, 1031 insertions(+), 21 deletions(-)

diff --git a/artemis-jakarta-client/pom.xml b/artemis-jakarta-client/pom.xml
new file mode 100644
index 0000000..fb753a9
--- /dev/null
+++ b/artemis-jakarta-client/pom.xml
@@ -0,0 +1,94 @@
+<!--
+  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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.activemq</groupId>
+        <artifactId>artemis-pom</artifactId>
+        <version>2.17.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>artemis-jakarta-client</artifactId>
+    <packaging>jar</packaging>
+    <name>ActiveMQ Artemis Jakarta Messaging Client</name>
+
+    <properties>
+        <activemq.basedir>${project.basedir}/..</activemq.basedir>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.activemq</groupId>
+            <artifactId>artemis-jms-client</artifactId>
+            <version>${project.version}</version>
+            <scope>provided</scope>
+            <!-- needed for the maven reactor -->
+        </dependency>
+        <dependency>
+            <groupId>org.apache.activemq</groupId>
+            <artifactId>artemis-core-client</artifactId>
+            <version>${project.version}</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.activemq</groupId>
+            <artifactId>artemis-commons</artifactId>
+            <version>${project.version}</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.activemq</groupId>
+            <artifactId>artemis-selector</artifactId>
+            <version>${project.version}</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>jakarta.jms</groupId>
+            <artifactId>jakarta.jms-api</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.wildfly.extras.batavia</groupId>
+                <artifactId>transformer-tools-mvn</artifactId>
+                <executions>
+                    <execution>
+                        <id>transform</id>
+                        <phase>process-classes</phase>
+                        <goals>
+                            <goal>transform-classes</goal>
+                        </goals>
+                        <configuration>
+                            <inputFile>${project.basedir}/../artemis-jms-client/target/classes/</inputFile>
+                            <outputFolder>${project.build.outputDirectory}</outputFolder>
+                        </configuration>
+                    </execution>
+                </executions>
+                <dependencies>
+                    <dependency>
+                        <groupId>org.wildfly.extras.batavia</groupId>
+                        <artifactId>transformer-impl-eclipse</artifactId>
+                        <version>${version.batavia}</version>
+                    </dependency>
+                </dependencies>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/artemis-jakarta-client/src/main/resources/jms-version.properties b/artemis-jakarta-client/src/main/resources/jms-version.properties
new file mode 100644
index 0000000..1d60a49
--- /dev/null
+++ b/artemis-jakarta-client/src/main/resources/jms-version.properties
@@ -0,0 +1,19 @@
+# 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.
+#
+
+activemq.version.implementation.versionName=3.0
+activemq.version.implementation.majorVersion=3
+activemq.version.implementation.minorVersion=0
\ No newline at end of file
diff --git a/artemis-jakarta-ra/pom.xml b/artemis-jakarta-ra/pom.xml
new file mode 100644
index 0000000..df06b82
--- /dev/null
+++ b/artemis-jakarta-ra/pom.xml
@@ -0,0 +1,72 @@
+<!--
+  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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+   <name>ActiveMQ Artemis Jakarta RAR</name>
+   <modelVersion>4.0.0</modelVersion>
+
+   <parent>
+      <groupId>org.apache.activemq</groupId>
+      <artifactId>artemis-pom</artifactId>
+      <version>2.17.0-SNAPSHOT</version>
+   </parent>
+
+   <artifactId>artemis-jakarta-ra</artifactId>
+   <packaging>jar</packaging>
+
+   <properties>
+      <activemq.basedir>${project.basedir}/..</activemq.basedir>
+   </properties>
+
+
+  <dependencies>
+      <dependency>
+          <groupId>org.apache.activemq</groupId>
+          <artifactId>artemis-ra</artifactId>
+          <version>${project.version}</version>
+          <scope>provided</scope>
+      </dependency>
+  </dependencies>
+
+  <build>
+      <plugins>
+          <plugin>
+              <groupId>org.wildfly.extras.batavia</groupId>
+              <artifactId>transformer-tools-mvn</artifactId>
+              <executions>
+                  <execution>
+                      <id>transform</id>
+                      <phase>process-classes</phase>
+                      <goals>
+                          <goal>transform-classes</goal>
+                      </goals>
+                      <configuration>
+                          <inputFile>${project.basedir}/../artemis-ra/target/classes/</inputFile>
+                          <outputFolder>${project.build.outputDirectory}</outputFolder>
+                      </configuration>
+                  </execution>
+              </executions>
+              <dependencies>
+                  <dependency>
+                      <groupId>org.wildfly.extras.batavia</groupId>
+                      <artifactId>transformer-impl-eclipse</artifactId>
+                      <version>${version.batavia}</version>
+                  </dependency>
+              </dependencies>
+          </plugin>
+      </plugins>
+  </build>
+</project>
diff --git a/artemis-jakarta-ra/src/main/resources/jms-version.properties b/artemis-jakarta-ra/src/main/resources/jms-version.properties
new file mode 100644
index 0000000..1d60a49
--- /dev/null
+++ b/artemis-jakarta-ra/src/main/resources/jms-version.properties
@@ -0,0 +1,19 @@
+# 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.
+#
+
+activemq.version.implementation.versionName=3.0
+activemq.version.implementation.majorVersion=3
+activemq.version.implementation.minorVersion=0
\ No newline at end of file
diff --git a/artemis-jakarta-server/pom.xml b/artemis-jakarta-server/pom.xml
new file mode 100644
index 0000000..014d9ad
--- /dev/null
+++ b/artemis-jakarta-server/pom.xml
@@ -0,0 +1,71 @@
+<!--
+  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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.activemq</groupId>
+        <artifactId>artemis-pom</artifactId>
+        <version>2.17.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>artemis-jakarta-server</artifactId>
+    <packaging>jar</packaging>
+    <name>ActiveMQ Artemis Jakarta Messaging Server</name>
+
+    <properties>
+        <activemq.basedir>${project.basedir}/..</activemq.basedir>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.activemq</groupId>
+            <artifactId>artemis-jms-server</artifactId>
+            <version>${project.version}</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.wildfly.extras.batavia</groupId>
+                <artifactId>transformer-tools-mvn</artifactId>
+                <executions>
+                    <execution>
+                        <id>transform</id>
+                        <phase>process-classes</phase>
+                        <goals>
+                            <goal>transform-classes</goal>
+                        </goals>
+                        <configuration>
+                            <inputFile>${project.basedir}/../artemis-jms-server/target/classes/</inputFile>
+                            <outputFolder>${project.build.outputDirectory}</outputFolder>
+                        </configuration>
+                    </execution>
+                </executions>
+                <dependencies>
+                    <dependency>
+                        <groupId>org.wildfly.extras.batavia</groupId>
+                        <artifactId>transformer-impl-eclipse</artifactId>
+                        <version>${version.batavia}</version>
+                    </dependency>
+                </dependencies>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/artemis-jakarta-service-extensions/pom.xml b/artemis-jakarta-service-extensions/pom.xml
new file mode 100644
index 0000000..b64c47d
--- /dev/null
+++ b/artemis-jakarta-service-extensions/pom.xml
@@ -0,0 +1,71 @@
+<!--
+  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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+   <modelVersion>4.0.0</modelVersion>
+
+   <parent>
+      <groupId>org.apache.activemq</groupId>
+      <artifactId>artemis-pom</artifactId>
+      <version>2.17.0-SNAPSHOT</version>
+   </parent>
+
+   <artifactId>artemis-jakarta-service-extensions</artifactId>
+   <packaging>jar</packaging>
+   <name>ActiveMQ Artemis Jakarta Service Extensions</name>
+
+   <properties>
+      <activemq.basedir>${project.basedir}/..</activemq.basedir>
+   </properties>
+
+   <dependencies>
+      <dependency>
+          <groupId>org.apache.activemq</groupId>
+          <artifactId>artemis-service-extensions</artifactId>
+          <version>${project.version}</version>
+          <scope>provided</scope>
+      </dependency>
+   </dependencies>
+
+   <build>
+      <plugins>
+         <plugin>
+            <groupId>org.wildfly.extras.batavia</groupId>
+            <artifactId>transformer-tools-mvn</artifactId>
+            <executions>
+               <execution>
+                   <id>transform</id>
+                   <phase>process-classes</phase>
+                   <goals>
+                      <goal>transform-classes</goal>
+                   </goals>
+                   <configuration>
+                      <inputFile>${project.basedir}/../artemis-service-extensions/target/classes/</inputFile>
+                      <outputFolder>${project.build.outputDirectory}</outputFolder>
+                   </configuration>
+                </execution>
+             </executions>
+             <dependencies>
+                 <dependency>
+                     <groupId>org.wildfly.extras.batavia</groupId>
+                     <artifactId>transformer-impl-eclipse</artifactId>
+                     <version>${version.batavia}</version>
+                 </dependency>
+             </dependencies>
+         </plugin>
+      </plugins>
+   </build>
+</project>
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnectionMetaData.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnectionMetaData.java
index c72c4d4..4d69b71 100644
--- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnectionMetaData.java
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnectionMetaData.java
@@ -16,9 +16,13 @@
  */
 package org.apache.activemq.artemis.jms.client;
 
+
+import java.io.IOException;
+import java.io.InputStream;
 import javax.jms.ConnectionMetaData;
 import javax.jms.JMSException;
 import java.util.Enumeration;
+import java.util.Properties;
 import java.util.Vector;
 
 import org.apache.activemq.artemis.core.version.Version;
@@ -27,6 +31,24 @@ import org.apache.activemq.artemis.core.version.Version;
  * ActiveMQ Artemis implementation of a JMS ConnectionMetaData.
  */
 public class ActiveMQConnectionMetaData implements ConnectionMetaData {
+   public static final String DEFAULT_PROP_FILE_NAME = "jms-version.properties";
+
+   private static final String JMS_VERSION_NAME;
+   private static final int JMS_MAJOR_VERSION;
+   private static final int JMS_MINOR_VERSION;
+   static {
+      Properties versionProps = new Properties();
+      try (InputStream in = ActiveMQConnectionMetaData.class.getClassLoader().getResourceAsStream(DEFAULT_PROP_FILE_NAME)) {
+         if (in != null) {
+            versionProps.load(in);
+         }
+      } catch (IOException e) {
+      }
+      JMS_VERSION_NAME = versionProps.getProperty("activemq.version.implementation.versionName", "2.0");
+      JMS_MAJOR_VERSION = Integer.valueOf(versionProps.getProperty("activemq.version.implementation.majorVersion", "2"));
+      JMS_MINOR_VERSION = Integer.valueOf(versionProps.getProperty("activemq.version.implementation.minorVersion", "0"));
+   }
+
    // Constants -----------------------------------------------------
 
    private static final String ACTIVEMQ = "ActiveMQ";
@@ -50,17 +72,17 @@ public class ActiveMQConnectionMetaData implements ConnectionMetaData {
 
    @Override
    public String getJMSVersion() throws JMSException {
-      return "2.0";
+      return JMS_VERSION_NAME;
    }
 
    @Override
    public int getJMSMajorVersion() throws JMSException {
-      return 2;
+      return JMS_MAJOR_VERSION;
    }
 
    @Override
    public int getJMSMinorVersion() throws JMSException {
-      return 0;
+      return JMS_MINOR_VERSION;
    }
 
    @Override
diff --git a/artemis-jms-client/src/main/resources/jms-version.properties b/artemis-jms-client/src/main/resources/jms-version.properties
new file mode 100644
index 0000000..bc97a63
--- /dev/null
+++ b/artemis-jms-client/src/main/resources/jms-version.properties
@@ -0,0 +1,19 @@
+# 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.
+#
+
+activemq.version.implementation.versionName=2.0
+activemq.version.implementation.majorVersion=2
+activemq.version.implementation.minorVersion=0
\ No newline at end of file
diff --git a/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ActiveMQRAConnectionMetaData.java b/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ActiveMQRAConnectionMetaData.java
index 901ecf4..5c8abb7 100644
--- a/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ActiveMQRAConnectionMetaData.java
+++ b/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/ActiveMQRAConnectionMetaData.java
@@ -16,8 +16,11 @@
  */
 package org.apache.activemq.artemis.ra;
 
+import java.io.IOException;
+import java.io.InputStream;
 import javax.jms.ConnectionMetaData;
 import java.util.Enumeration;
+import java.util.Properties;
 import java.util.Vector;
 
 /**
@@ -25,6 +28,24 @@ import java.util.Vector;
  */
 public class ActiveMQRAConnectionMetaData implements ConnectionMetaData {
 
+   public static final String DEFAULT_PROP_FILE_NAME = "jms-version.properties";
+
+   private static final String JMS_VERSION_NAME;
+   private static final int JMS_MAJOR_VERSION;
+   private static final int JMS_MINOR_VERSION;
+   static {
+      Properties versionProps = new Properties();
+      try (InputStream in = ActiveMQRAConnectionMetaData.class.getClassLoader().getResourceAsStream(DEFAULT_PROP_FILE_NAME)) {
+         if (in != null) {
+            versionProps.load(in);
+         }
+      } catch (IOException e) {
+      }
+      JMS_VERSION_NAME = versionProps.getProperty("activemq.version.implementation.versionName", "2.0");
+      JMS_MAJOR_VERSION = Integer.valueOf(versionProps.getProperty("activemq.version.implementation.majorVersion", "2"));
+      JMS_MINOR_VERSION = Integer.valueOf(versionProps.getProperty("activemq.version.implementation.minorVersion", "0"));
+   }
+
    /**
     * Constructor
     */
@@ -44,8 +65,7 @@ public class ActiveMQRAConnectionMetaData implements ConnectionMetaData {
       if (ActiveMQRALogger.LOGGER.isTraceEnabled()) {
          ActiveMQRALogger.LOGGER.trace("getJMSVersion()");
       }
-
-      return "2.0";
+      return JMS_VERSION_NAME;
    }
 
    /**
@@ -58,8 +78,7 @@ public class ActiveMQRAConnectionMetaData implements ConnectionMetaData {
       if (ActiveMQRALogger.LOGGER.isTraceEnabled()) {
          ActiveMQRALogger.LOGGER.trace("getJMSMajorVersion()");
       }
-
-      return 2;
+      return JMS_MAJOR_VERSION;
    }
 
    /**
@@ -72,8 +91,7 @@ public class ActiveMQRAConnectionMetaData implements ConnectionMetaData {
       if (ActiveMQRALogger.LOGGER.isTraceEnabled()) {
          ActiveMQRALogger.LOGGER.trace("getJMSMinorVersion()");
       }
-
-      return 0;
+      return JMS_MINOR_VERSION;
    }
 
    /**
diff --git a/artemis-ra/src/main/resources/jms-version.properties b/artemis-ra/src/main/resources/jms-version.properties
new file mode 100644
index 0000000..dd6a10f
--- /dev/null
+++ b/artemis-ra/src/main/resources/jms-version.properties
@@ -0,0 +1,19 @@
+# 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.
+#
+
+activemq.version.implementation.versionName=2.0
+activemq.version.implementation.majorVersion=2
+activemq.version.implementation.minorVersion=0
diff --git a/pom.xml b/pom.xml
index 2644a3d..76e8700 100644
--- a/pom.xml
+++ b/pom.xml
@@ -47,11 +47,15 @@
       <module>artemis-jms-client</module>
       <module>artemis-jms-client-all</module>
       <module>artemis-jms-client-osgi</module>
+      <module>artemis-jakarta-client</module>
       <module>artemis-jms-server</module>
+      <module>artemis-jakarta-server</module>
       <module>artemis-journal</module>
       <module>artemis-ra</module>
+      <module>artemis-jakarta-ra</module>
       <module>artemis-rest</module>
       <module>artemis-service-extensions</module>
+      <module>artemis-jakarta-service-extensions</module>
       <module>artemis-jdbc-store</module>
       <module>artemis-maven-plugin</module>
       <module>artemis-server-osgi</module>
@@ -119,6 +123,12 @@
       <geronimo.ejb.3.0.spec.version>1.0.1</geronimo.ejb.3.0.spec.version>
       <geronimo.jta.1.1.spec.version>1.1.1</geronimo.jta.1.1.spec.version>
       <geronimo.jms.2.spec.version>1.0-alpha-2</geronimo.jms.2.spec.version>
+      <jakarta.json-api.version>2.0.0</jakarta.json-api.version>
+      <jakarta.annotation-api.version>2.0.0</jakarta.annotation-api.version>
+      <jakarta.ejb-api.version>4.0.0</jakarta.ejb-api.version>
+      <jakarta.resource-api.version>2.0.0</jakarta.resource-api.version>
+      <jakarta.transaction-api.version>2.0.0</jakarta.transaction-api.version>
+      <jakarta.jms-api.version>3.0.0</jakarta.jms-api.version>
       <weld.version>2.4.0.Final</weld.version>
       <arquillian-weld-embedded.version>2.0.0.Beta3</arquillian-weld-embedded.version>
       <owb.version>1.7.0</owb.version>
@@ -130,12 +140,14 @@
       <version.micrometer>1.6.1</version.micrometer>
       <hamcrest.version>2.1</hamcrest.version>
       <surefire.version>2.22.2</surefire.version>
+      <!-- for JakrtaEE -->
+      <version.batavia>1.0.5.Final</version.batavia>
 
       <!-- used on tests -->
       <groovy.version>2.5.10</groovy.version>
       <vertx.version>3.9.4</vertx.version>
 
-      <owasp.version>1.4.3</owasp.version>
+      <owasp.version>6.1.0</owasp.version>
       <spring.version>5.1.7.RELEASE</spring.version>
 
       <activemq.version.versionName>${project.version}</activemq.version.versionName>
@@ -442,7 +454,42 @@
             <version>${geronimo.jms.2.spec.version}</version>
             <!-- License: Apache 2.0 -->
          </dependency>
-
+         <dependency>
+            <groupId>jakarta.jms</groupId>
+            <artifactId>jakarta.jms-api</artifactId>
+            <version>${jakarta.jms-api.version}</version>
+            <!-- License: EPL 2.0 -->
+        </dependency>
+        <dependency>
+           <groupId>jakarta.transaction</groupId>
+           <artifactId>jakarta.transaction-api</artifactId>
+           <version>${jakarta.transaction-api.version}</version>
+            <!-- License: EPL 2.0 -->
+        </dependency>
+        <dependency>
+           <groupId>jakarta.json</groupId>
+           <artifactId>jakarta.json-api</artifactId>
+           <version>${jakarta.json-api.version}</version>
+            <!-- License: EPL 2.0 -->
+        </dependency>
+        <dependency>
+           <groupId>jakarta.ejb</groupId>
+           <artifactId>jakarta.ejb-api</artifactId>
+           <version>${jakarta.ejb-api.version}</version>
+            <!-- License: EPL 2.0 -->
+        </dependency>
+        <dependency>
+           <groupId>jakarta.annotation</groupId>
+           <artifactId>jakarta.annotation-api</artifactId>
+           <version>${jakarta.annotation-api.version}</version>
+            <!-- License: EPL 2.0 -->
+        </dependency>
+        <dependency>
+           <groupId>jakarta.resource</groupId>
+           <artifactId>jakarta.resource-api</artifactId>
+           <version>${jakarta.resource-api.version}</version>
+            <!-- License: EPL 2.0 -->
+        </dependency>
          <dependency>
             <groupId>commons-collections</groupId>
             <artifactId>commons-collections</artifactId>
@@ -1503,6 +1550,11 @@
                <artifactId>maven-deploy-plugin</artifactId>
                <version>2.7</version>
             </plugin>
+            <plugin>
+              <groupId>org.wildfly.extras.batavia</groupId>
+              <artifactId>transformer-tools-mvn</artifactId>
+              <version>${version.batavia}</version>
+          </plugin>
 
             <plugin>
                <inherited>true</inherited>
@@ -1815,8 +1867,6 @@
                </artifactItems>
             </configuration>
          </plugin>
-
-
       </plugins>
    </build>
 
diff --git a/tests/compatibility-tests/pom.xml b/tests/compatibility-tests/pom.xml
index e3fb144..813e0a2 100644
--- a/tests/compatibility-tests/pom.xml
+++ b/tests/compatibility-tests/pom.xml
@@ -334,6 +334,34 @@
                      </libList>
                      <variableName>ARTEMIS-SNAPSHOT</variableName>
                   </configuration>
+               </execution><!-- The executions of dependency-scan will calculate dependencies for each specific version used here on this testsuite. -->
+               <execution>
+                  <id>jakartaee</id>
+                  <phase>compile</phase>
+                  <goals>
+                     <goal>dependency-scan</goal>
+                  </goals>
+                  <configuration>
+                     <libListWithDeps>
+                        <arg>org.apache.activemq:artemis-core-client:${project.version}</arg>
+                        <arg>org.apache.activemq:artemis-commons:${project.version}</arg>
+                        <arg>org.apache.activemq:artemis-selector:${project.version}</arg>
+                        <arg>org.apache.activemq:artemis-server:${project.version}</arg>
+                        <arg>org.apache.activemq:artemis-journal:${project.version}</arg>
+                        <arg>org.apache.activemq:artemis-hornetq-protocol:${project.version}</arg>
+                        <arg>org.codehaus.groovy:groovy-all:pom:${groovy.version}</arg>
+                     </libListWithDeps>
+                     <libList>
+                        <arg>jakarta.json:jakarta.json-api:${jakarta.json-api.version}</arg>
+                        <arg>jakarta.transaction:jakarta.transaction-api:${jakarta.transaction-api.version}</arg>
+                        <arg>org.apache.activemq:artemis-jakarta-server:${project.version}</arg>
+                        <arg>org.apache.activemq:artemis-jakarta-client:${project.version}</arg>
+                        <arg>org.apache.activemq:artemis-jakarta-service-extensions:${project.version}</arg>
+                        <arg>jakarta.jms:jakarta.jms-api:${jakarta.jms-api.version}</arg>
+                        <arg>org.apache.activemq.tests:compatibility-tests:${project.version}</arg>
+                     </libList>
+                     <variableName>ARTEMIS-JAKARTAEE</variableName>
+                  </configuration>
                </execution>
                <execution>
                   <phase>compile</phase>
@@ -639,6 +667,10 @@
                      <name>ARTEMIS-270</name>
                      <value>${ARTEMIS-270}</value>
                   </property>
+                  <property>
+                     <name>ARTEMIS-JAKARTAEE</name>
+                     <value>${ARTEMIS-JAKARTAEE}</value>
+                  </property>
                </systemProperties>
                <skipTests>${skipCompatibilityTests}</skipTests>
                <argLine>${modular.jdk.surefire.arg} -Djgroups.bind_addr=::1 ${activemq-surefire-argline}</argLine>
diff --git a/tests/compatibility-tests/src/main/java/org/apache/activemq/artemis/tests/compatibility/GroovyRun.java b/tests/compatibility-tests/src/main/java/org/apache/activemq/artemis/tests/compatibility/GroovyRun.java
index 345f85a..2ccfa5f 100644
--- a/tests/compatibility-tests/src/main/java/org/apache/activemq/artemis/tests/compatibility/GroovyRun.java
+++ b/tests/compatibility-tests/src/main/java/org/apache/activemq/artemis/tests/compatibility/GroovyRun.java
@@ -28,6 +28,7 @@ import groovy.lang.GroovyShell;
 public class GroovyRun {
 
    public static final String SNAPSHOT = "ARTEMIS-SNAPSHOT";
+   public static final String JAKARTAEE = "ARTEMIS-JAKARTAEE";
    public static final String ONE_FIVE = "ARTEMIS-155";
    public static final String ONE_FOUR = "ARTEMIS-140";
    public static final String TWO_ZERO = "ARTEMIS-200";
diff --git a/tests/compatibility-tests/src/main/resources/jakartaReplyToQueue/receiveMessages.groovy b/tests/compatibility-tests/src/main/resources/jakartaReplyToQueue/receiveMessages.groovy
new file mode 100644
index 0000000..122f462
--- /dev/null
+++ b/tests/compatibility-tests/src/main/resources/jakartaReplyToQueue/receiveMessages.groovy
@@ -0,0 +1,53 @@
+package jmsReplyToQueue
+
+import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory
+import org.apache.activemq.artemis.tests.compatibility.GroovyRun
+
+import jakarta.jms.*
+
+/*
+ * 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.
+ */
+
+ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("tcp://localhost:61616");
+try {
+    cf.setEnable1xPrefixes(true);
+} catch (Throwable totallyIgnored) {
+    // older versions will not have this method, dont even bother about seeing the stack trace or exception
+}
+Connection connection = cf.createConnection();
+Session session = connection.createSession(true, Session.SESSION_TRANSACTED);
+Queue myQueue = session.createQueue("myQueue");
+MessageConsumer queueConsumer = session.createConsumer(myQueue);
+consumerCreated.countDown();
+connection.start()
+
+Message message = queueConsumer.receive(5000);
+GroovyRun.assertNotNull(message)
+session.commit();
+queueConsumer.close();
+
+MessageProducer producer = session.createProducer(message.getJMSReplyTo());
+message = session.createMessage();
+producer.send(message);
+session.commit();
+
+connection.close();
+
+latch.countDown();
+
+
+
diff --git a/tests/compatibility-tests/src/main/resources/jakartaReplyToQueue/sendMessagesAddress.groovy b/tests/compatibility-tests/src/main/resources/jakartaReplyToQueue/sendMessagesAddress.groovy
new file mode 100644
index 0000000..5e69b16
--- /dev/null
+++ b/tests/compatibility-tests/src/main/resources/jakartaReplyToQueue/sendMessagesAddress.groovy
@@ -0,0 +1,52 @@
+package jmsReplyToQueue
+
+import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory
+import org.apache.activemq.artemis.tests.compatibility.GroovyRun
+
+import jakarta.jms.*
+
+/*
+ * 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.
+ */
+
+ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("tcp://localhost:61616");
+try {
+    cf.setEnable1xPrefixes(true);
+} catch (Throwable totallyIgnored) {
+    // older versions will not have this method, dont even bother about seeing the stack trace or exception
+}
+Connection connection = cf.createConnection();
+Session session = connection.createSession(true, Session.SESSION_TRANSACTED);
+connection.start();
+
+Queue myQueue = session.createQueue("myQueue");
+Queue temporaryQueue = session.createQueue("myTemporaryQueue");
+MessageConsumer consumer = session.createConsumer(temporaryQueue);
+
+MessageProducer queueProducer = session.createProducer(myQueue)
+
+queueProducer.setDeliveryMode(DeliveryMode.PERSISTENT);
+Message message = session.createMessage();
+message.setJMSReplyTo(temporaryQueue);
+queueProducer.send(message);
+session.commit();
+
+message = consumer.receive(10000);
+GroovyRun.assertNotNull(message);
+session.commit();
+
+connection.close();
+senderLatch.countDown();
\ No newline at end of file
diff --git a/tests/compatibility-tests/src/main/resources/jakartaReplyToTempQueue/receiveMessages.groovy b/tests/compatibility-tests/src/main/resources/jakartaReplyToTempQueue/receiveMessages.groovy
new file mode 100644
index 0000000..ee08470
--- /dev/null
+++ b/tests/compatibility-tests/src/main/resources/jakartaReplyToTempQueue/receiveMessages.groovy
@@ -0,0 +1,53 @@
+package jmsReplyToTempQueue
+
+import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory
+import org.apache.activemq.artemis.tests.compatibility.GroovyRun
+
+import jakarta.jms.*
+
+/*
+ * 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.
+ */
+
+ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("tcp://localhost:61616");
+try {
+    cf.setEnable1xPrefixes(true);
+} catch (Throwable totallyIgnored) {
+    // older versions will not have this method, dont even bother about seeing the stack trace or exception
+}
+Connection connection = cf.createConnection();
+Session session = connection.createSession(true, Session.SESSION_TRANSACTED);
+Queue myQueue = session.createQueue("myQueue");
+MessageConsumer queueConsumer = session.createConsumer(myQueue);
+consumerCreated.countDown();
+connection.start()
+
+Message message = queueConsumer.receive(5000);
+GroovyRun.assertNotNull(message)
+session.commit();
+queueConsumer.close();
+
+MessageProducer producer = session.createProducer(message.getJMSReplyTo());
+message = session.createMessage();
+producer.send(message);
+session.commit();
+
+connection.close();
+
+latch.countDown();
+
+
+
diff --git a/tests/compatibility-tests/src/main/resources/jakartaReplyToTempQueue/sendMessagesAddress.groovy b/tests/compatibility-tests/src/main/resources/jakartaReplyToTempQueue/sendMessagesAddress.groovy
new file mode 100644
index 0000000..3c8f4a1
--- /dev/null
+++ b/tests/compatibility-tests/src/main/resources/jakartaReplyToTempQueue/sendMessagesAddress.groovy
@@ -0,0 +1,52 @@
+package jmsReplyToTempQueue
+
+import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory
+import org.apache.activemq.artemis.tests.compatibility.GroovyRun
+
+import jakarta.jms.*
+
+/*
+ * 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.
+ */
+
+ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("tcp://localhost:61616");
+try {
+    cf.setEnable1xPrefixes(true);
+} catch (Throwable totallyIgnored) {
+    // older versions will not have this method, dont even bother about seeing the stack trace or exception
+}
+Connection connection = cf.createConnection();
+Session session = connection.createSession(true, Session.SESSION_TRANSACTED);
+connection.start();
+
+Queue myQueue = session.createQueue("myQueue");
+Queue temporaryQueue = session.createTemporaryQueue();
+MessageConsumer consumer = session.createConsumer(temporaryQueue);
+
+MessageProducer queueProducer = session.createProducer(myQueue)
+
+queueProducer.setDeliveryMode(DeliveryMode.PERSISTENT);
+Message message = session.createMessage();
+message.setJMSReplyTo(temporaryQueue);
+queueProducer.send(message);
+session.commit();
+
+message = consumer.receive(10000);
+GroovyRun.assertNotNull(message);
+session.commit();
+
+connection.close();
+senderLatch.countDown();
\ No newline at end of file
diff --git a/tests/compatibility-tests/src/main/resources/jakartaReplyToTempTopic/receiveMessages.groovy b/tests/compatibility-tests/src/main/resources/jakartaReplyToTempTopic/receiveMessages.groovy
new file mode 100644
index 0000000..0fb72d9
--- /dev/null
+++ b/tests/compatibility-tests/src/main/resources/jakartaReplyToTempTopic/receiveMessages.groovy
@@ -0,0 +1,59 @@
+package jmsReplyToTempTopic
+
+import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory
+import org.apache.activemq.artemis.tests.compatibility.GroovyRun
+
+import jakarta.jms.*
+
+/*
+ * 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.
+ */
+
+ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("tcp://localhost:61616");
+try {
+    cf.setEnable1xPrefixes(true);
+} catch (Throwable totallyIgnored) {
+    // older versions will not have this method, dont even bother about seeing the stack trace or exception
+}
+Connection connection = cf.createConnection();
+Session session = connection.createSession(true, Session.SESSION_TRANSACTED);
+Queue myQueue = session.createQueue("myQueue");
+
+GroovyRun.assertEquals("myQueue", myQueue.getQueueName());
+
+MessageConsumer queueConsumer = session.createConsumer(myQueue);
+consumerCreated.countDown();
+connection.start()
+
+for (int i = 0; i < 5; i++) {
+    Message message = queueConsumer.receive(5000);
+    GroovyRun.assertNotNull(message)
+
+    GroovyRun.assertEquals("myQueue", ((Queue)message.getJMSDestination()).getQueueName());
+
+    MessageProducer producer = session.createProducer(message.getJMSReplyTo());
+    message = session.createMessage();
+    producer.send(message);
+}
+queueConsumer.close();
+session.commit();
+
+connection.close();
+
+latch.countDown();
+
+
+
diff --git a/tests/compatibility-tests/src/main/resources/jakartaReplyToTempTopic/sendMessagesAddress.groovy b/tests/compatibility-tests/src/main/resources/jakartaReplyToTempTopic/sendMessagesAddress.groovy
new file mode 100644
index 0000000..0eb5ba1
--- /dev/null
+++ b/tests/compatibility-tests/src/main/resources/jakartaReplyToTempTopic/sendMessagesAddress.groovy
@@ -0,0 +1,68 @@
+package jmsReplyToTempTopic
+
+import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory
+import org.apache.activemq.artemis.tests.compatibility.GroovyRun
+
+import jakarta.jms.*
+
+/*
+ * 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.
+ */
+
+ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("tcp://localhost:61616");
+try {
+    cf.setEnable1xPrefixes(true);
+} catch (Throwable totallyIgnored) {
+    // older versions will not have this method, dont even bother about seeing the stack trace or exception
+}
+Connection connection = cf.createConnection();
+Session session = connection.createSession(true, Session.SESSION_TRANSACTED);
+connection.start();
+
+Queue myQueue = session.createQueue("myQueue");
+
+GroovyRun.assertEquals("myQueue", myQueue.getQueueName());
+
+TemporaryTopic replyTopic = session.createTemporaryTopic();
+MessageConsumer consumer = session.createConsumer(replyTopic);
+
+
+MessageProducer queueProducer = session.createProducer(myQueue)
+
+queueProducer.setDeliveryMode(DeliveryMode.PERSISTENT);
+sendMessage(session.createTextMessage("hello"), replyTopic, myQueue, queueProducer);
+sendMessage(session.createMapMessage(), replyTopic, myQueue, queueProducer);
+sendMessage(session.createObjectMessage(), replyTopic, myQueue, queueProducer);
+sendMessage(session.createStreamMessage(), replyTopic, myQueue, queueProducer);
+sendMessage(session.createMessage(), replyTopic, myQueue, queueProducer);
+session.commit();
+
+
+for (int i = 0; i < 5; i++) {
+    message = consumer.receive(10000);
+    GroovyRun.assertNotNull(message);
+}
+GroovyRun.assertNull(consumer.receiveNoWait());
+session.commit();
+
+connection.close();
+senderLatch.countDown();
+
+
+void sendMessage(Message message, TemporaryTopic replyTopic, Queue myQueue, MessageProducer queueProducer) {
+    message.setJMSReplyTo(replyTopic);
+    queueProducer.send(message);
+}
\ No newline at end of file
diff --git a/tests/compatibility-tests/src/main/resources/jakartaReplyToTopic/receiveMessages.groovy b/tests/compatibility-tests/src/main/resources/jakartaReplyToTopic/receiveMessages.groovy
new file mode 100644
index 0000000..8c77f27
--- /dev/null
+++ b/tests/compatibility-tests/src/main/resources/jakartaReplyToTopic/receiveMessages.groovy
@@ -0,0 +1,53 @@
+package jmsReplyToTopic
+
+import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory
+import org.apache.activemq.artemis.tests.compatibility.GroovyRun
+
+import jakarta.jms.*
+
+/*
+ * 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.
+ */
+
+ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("tcp://localhost:61616");
+try {
+    cf.setEnable1xPrefixes(true);
+} catch (Throwable totallyIgnored) {
+    // older versions will not have this method, dont even bother about seeing the stack trace or exception
+}
+Connection connection = cf.createConnection();
+Session session = connection.createSession(true, Session.SESSION_TRANSACTED);
+Queue myQueue = session.createQueue("myQueue");
+MessageConsumer queueConsumer = session.createConsumer(myQueue);
+consumerCreated.countDown();
+connection.start()
+
+Message message = queueConsumer.receive(5000);
+GroovyRun.assertNotNull(message)
+session.commit();
+queueConsumer.close();
+
+MessageProducer producer = session.createProducer(message.getJMSReplyTo());
+message = session.createMessage();
+producer.send(message);
+session.commit();
+
+connection.close();
+
+latch.countDown();
+
+
+
diff --git a/tests/compatibility-tests/src/main/resources/jakartaReplyToTopic/sendMessagesAddress.groovy b/tests/compatibility-tests/src/main/resources/jakartaReplyToTopic/sendMessagesAddress.groovy
new file mode 100644
index 0000000..f65a883
--- /dev/null
+++ b/tests/compatibility-tests/src/main/resources/jakartaReplyToTopic/sendMessagesAddress.groovy
@@ -0,0 +1,52 @@
+package jmsReplyToTopic
+
+import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory
+import org.apache.activemq.artemis.tests.compatibility.GroovyRun
+
+import jakarta.jms.*
+
+/*
+ * 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.
+ */
+
+ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("tcp://localhost:61616");
+try {
+    cf.setEnable1xPrefixes(true);
+} catch (Throwable totallyIgnored) {
+    // older versions will not have this method, dont even bother about seeing the stack trace or exception
+}
+Connection connection = cf.createConnection();
+Session session = connection.createSession(true, Session.SESSION_TRANSACTED);
+connection.start();
+
+Queue myQueue = session.createQueue("myQueue");
+Topic replyTopic = session.createTopic("myReplyTopic");
+MessageConsumer consumer = session.createConsumer(replyTopic);
+
+MessageProducer queueProducer = session.createProducer(myQueue)
+
+queueProducer.setDeliveryMode(DeliveryMode.PERSISTENT);
+Message message = session.createMessage();
+message.setJMSReplyTo(replyTopic);
+queueProducer.send(message);
+session.commit();
+
+message = consumer.receive(10000);
+GroovyRun.assertNotNull(message);
+session.commit();
+
+connection.close();
+senderLatch.countDown();
\ No newline at end of file
diff --git a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToQueueTest.java b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToQueueTest.java
index 3930544..7b6047e 100644
--- a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToQueueTest.java
+++ b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToQueueTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.activemq.artemis.tests.compatibility;
 
+import static org.apache.activemq.artemis.tests.compatibility.GroovyRun.JAKARTAEE;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -44,6 +46,12 @@ public class JmsReplyToQueueTest extends VersionedBase {
       combinations.add(new Object[]{SNAPSHOT, ONE_FIVE, SNAPSHOT});
       combinations.add(new Object[]{SNAPSHOT, SNAPSHOT, ONE_FIVE});
       combinations.add(new Object[]{SNAPSHOT, SNAPSHOT, SNAPSHOT});
+      combinations.add(new Object[]{JAKARTAEE, JAKARTAEE, JAKARTAEE});
+      combinations.add(new Object[]{JAKARTAEE, SNAPSHOT, SNAPSHOT});
+      combinations.add(new Object[]{JAKARTAEE, JAKARTAEE, SNAPSHOT});
+      combinations.add(new Object[]{JAKARTAEE, SNAPSHOT, JAKARTAEE});
+      combinations.add(new Object[]{JAKARTAEE, JAKARTAEE, ONE_FIVE});
+      combinations.add(new Object[]{JAKARTAEE, ONE_FIVE, JAKARTAEE});
       return combinations;
    }
 
@@ -78,7 +86,11 @@ public class JmsReplyToQueueTest extends VersionedBase {
          @Override
          public void run() {
             try {
-               evaluate(receiverClassloader, "jmsReplyToQueue/receiveMessages.groovy", receiver);
+               if (JAKARTAEE.equals(receiver)) {
+                  evaluate(receiverClassloader, "jakartaReplyToQueue/receiveMessages.groovy", receiver);
+               } else {
+                  evaluate(receiverClassloader, "jmsReplyToQueue/receiveMessages.groovy", receiver);
+               }
             } catch (Throwable e) {
                e.printStackTrace();
                errors.incrementAndGet();
@@ -94,7 +106,11 @@ public class JmsReplyToQueueTest extends VersionedBase {
          @Override
          public void run() {
             try {
-               evaluate(senderClassloader, "jmsReplyToQueue/sendMessagesAddress.groovy", sender);
+               if (JAKARTAEE.equals(sender)) {
+                  evaluate(senderClassloader, "jakartaReplyToQueue/sendMessagesAddress.groovy", sender);
+               } else {
+                  evaluate(senderClassloader, "jmsReplyToQueue/sendMessagesAddress.groovy", sender);
+               }
             } catch (Throwable e) {
                e.printStackTrace();
                errors.incrementAndGet();
diff --git a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToTempQueueTest.java b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToTempQueueTest.java
index 3bb5cc0..93b8ca1 100644
--- a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToTempQueueTest.java
+++ b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToTempQueueTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.activemq.artemis.tests.compatibility;
 
+import static org.apache.activemq.artemis.tests.compatibility.GroovyRun.JAKARTAEE;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -44,6 +46,11 @@ public class JmsReplyToTempQueueTest extends VersionedBase {
       combinations.add(new Object[]{SNAPSHOT, ONE_FIVE, SNAPSHOT});
       combinations.add(new Object[]{SNAPSHOT, SNAPSHOT, ONE_FIVE});
       combinations.add(new Object[]{SNAPSHOT, SNAPSHOT, SNAPSHOT});
+      combinations.add(new Object[]{JAKARTAEE, JAKARTAEE, JAKARTAEE});
+      combinations.add(new Object[]{JAKARTAEE, JAKARTAEE, SNAPSHOT});
+      combinations.add(new Object[]{JAKARTAEE, SNAPSHOT, JAKARTAEE});
+      combinations.add(new Object[]{JAKARTAEE, JAKARTAEE, ONE_FIVE});
+      combinations.add(new Object[]{JAKARTAEE, ONE_FIVE, JAKARTAEE});
       return combinations;
    }
 
@@ -78,7 +85,11 @@ public class JmsReplyToTempQueueTest extends VersionedBase {
          @Override
          public void run() {
             try {
-               evaluate(receiverClassloader, "jmsReplyToTempQueue/receiveMessages.groovy", receiver);
+               if (JAKARTAEE.equals(receiver)) {
+                  evaluate(receiverClassloader, "jakartaReplyToTempQueue/receiveMessages.groovy", receiver);
+               } else {
+                  evaluate(receiverClassloader, "jmsReplyToTempQueue/receiveMessages.groovy", receiver);
+               }
             } catch (Throwable e) {
                e.printStackTrace();
                errors.incrementAndGet();
@@ -94,7 +105,11 @@ public class JmsReplyToTempQueueTest extends VersionedBase {
          @Override
          public void run() {
             try {
-               evaluate(senderClassloader, "jmsReplyToTempQueue/sendMessagesAddress.groovy", sender);
+               if (JAKARTAEE.equals(sender)) {
+                  evaluate(senderClassloader, "jakartaReplyToTempQueue/sendMessagesAddress.groovy", sender);
+               } else {
+                  evaluate(senderClassloader, "jmsReplyToTempQueue/sendMessagesAddress.groovy", sender);
+               }
             } catch (Throwable e) {
                e.printStackTrace();
                errors.incrementAndGet();
diff --git a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToTempTopicTest.java b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToTempTopicTest.java
index 1efa3de..7cbec8d 100644
--- a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToTempTopicTest.java
+++ b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToTempTopicTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.activemq.artemis.tests.compatibility;
 
+import static org.apache.activemq.artemis.tests.compatibility.GroovyRun.JAKARTAEE;
+
 import org.apache.activemq.artemis.tests.compatibility.base.VersionedBase;
 import org.apache.activemq.artemis.utils.FileUtil;
 import org.junit.After;
@@ -44,6 +46,11 @@ public class JmsReplyToTempTopicTest extends VersionedBase {
       combinations.add(new Object[]{SNAPSHOT, ONE_FIVE, SNAPSHOT});
       combinations.add(new Object[]{SNAPSHOT, SNAPSHOT, ONE_FIVE});
       combinations.add(new Object[]{SNAPSHOT, SNAPSHOT, SNAPSHOT});
+      combinations.add(new Object[]{JAKARTAEE, JAKARTAEE, JAKARTAEE});
+      combinations.add(new Object[]{JAKARTAEE, JAKARTAEE, SNAPSHOT});
+      combinations.add(new Object[]{JAKARTAEE, SNAPSHOT, JAKARTAEE});
+      combinations.add(new Object[]{JAKARTAEE, JAKARTAEE, ONE_FIVE});
+      combinations.add(new Object[]{JAKARTAEE, ONE_FIVE, JAKARTAEE});
       return combinations;
    }
 
@@ -78,7 +85,11 @@ public class JmsReplyToTempTopicTest extends VersionedBase {
          @Override
          public void run() {
             try {
-               evaluate(receiverClassloader, "jmsReplyToTempTopic/receiveMessages.groovy", receiver);
+               if (JAKARTAEE.equals(receiver)) {
+                  evaluate(receiverClassloader, "jakartaReplyToTempTopic/receiveMessages.groovy", receiver);
+               } else {
+                  evaluate(receiverClassloader, "jmsReplyToTempTopic/receiveMessages.groovy", receiver);
+               }
             } catch (Throwable e) {
                e.printStackTrace();
                errors.incrementAndGet();
@@ -94,7 +105,11 @@ public class JmsReplyToTempTopicTest extends VersionedBase {
          @Override
          public void run() {
             try {
-               evaluate(senderClassloader, "jmsReplyToTempTopic/sendMessagesAddress.groovy", sender);
+               if (JAKARTAEE.equals(sender)) {
+                  evaluate(senderClassloader, "jakartaReplyToTempTopic/sendMessagesAddress.groovy", sender);
+               } else {
+                  evaluate(senderClassloader, "jmsReplyToTempTopic/sendMessagesAddress.groovy", sender);
+               }
             } catch (Throwable e) {
                e.printStackTrace();
                errors.incrementAndGet();
diff --git a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToTopicTest.java b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToTopicTest.java
index 3d2406b..a20bc06 100644
--- a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToTopicTest.java
+++ b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/JmsReplyToTopicTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.activemq.artemis.tests.compatibility;
 
+import static org.apache.activemq.artemis.tests.compatibility.GroovyRun.JAKARTAEE;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -44,6 +46,11 @@ public class JmsReplyToTopicTest extends VersionedBase {
       combinations.add(new Object[]{SNAPSHOT, ONE_FIVE, SNAPSHOT});
       combinations.add(new Object[]{SNAPSHOT, SNAPSHOT, ONE_FIVE});
       combinations.add(new Object[]{SNAPSHOT, SNAPSHOT, SNAPSHOT});
+      combinations.add(new Object[]{JAKARTAEE, JAKARTAEE, JAKARTAEE});
+      combinations.add(new Object[]{JAKARTAEE, JAKARTAEE, SNAPSHOT});
+      combinations.add(new Object[]{JAKARTAEE, SNAPSHOT, JAKARTAEE});
+      combinations.add(new Object[]{JAKARTAEE, JAKARTAEE, ONE_FIVE});
+      combinations.add(new Object[]{JAKARTAEE, ONE_FIVE, JAKARTAEE});
       return combinations;
    }
 
@@ -78,7 +85,11 @@ public class JmsReplyToTopicTest extends VersionedBase {
          @Override
          public void run() {
             try {
-               evaluate(receiverClassloader, "jmsReplyToTopic/receiveMessages.groovy", receiver);
+               if (JAKARTAEE.equals(receiver)) {
+                  evaluate(receiverClassloader, "jakartaReplyToTopic/receiveMessages.groovy", receiver);
+               } else {
+                  evaluate(receiverClassloader, "jmsReplyToTopic/receiveMessages.groovy", receiver);
+               }
             } catch (Throwable e) {
                e.printStackTrace();
                errors.incrementAndGet();
@@ -94,7 +105,11 @@ public class JmsReplyToTopicTest extends VersionedBase {
          @Override
          public void run() {
             try {
-               evaluate(senderClassloader, "jmsReplyToTopic/sendMessagesAddress.groovy", sender);
+               if (JAKARTAEE.equals(sender)) {
+                  evaluate(senderClassloader, "jakartaReplyToTopic/sendMessagesAddress.groovy", sender);
+               } else {
+                  evaluate(senderClassloader, "jmsReplyToTopic/sendMessagesAddress.groovy", sender);
+               }
             } catch (Throwable e) {
                e.printStackTrace();
                errors.incrementAndGet();