xaResourceOrphanFilters;
+
+ /**
+ * The object store configuration.
+ */
+ @ConfigItem
+ public ObjectStoreConfig objectStore;
+}
+
+@ConfigGroup
+class ObjectStoreConfig {
+ /**
+ * The name of the directory where the transaction logs will be stored when using the {@code file-system} object store.
+ * If the value is not absolute then the directory is relative
+ * to the user.dir system property.
+ */
+ @ConfigItem(defaultValue = "ObjectStore")
+ public String directory;
+
+ /**
+ * The type of object store.
+ */
+ @ConfigItem(defaultValue = "file-system")
+ public ObjectStoreType type;
+
+ /**
+ * The name of the datasource where the transaction logs will be stored when using the {@code jdbc} object store.
+ *
+ * If undefined, it will use the default datasource.
+ */
+ @ConfigItem
+ public Optional datasource = Optional.empty();
+
+ /**
+ * Whether to create the table if it does not exist.
+ */
+ @ConfigItem(defaultValue = "false")
+ public boolean createTable;
+
+ /**
+ * Whether to drop the table on startup.
+ */
+ @ConfigItem(defaultValue = "false")
+ public boolean dropTable;
+
+ /**
+ * The prefix to apply to the table.
+ */
+ @ConfigItem(defaultValue = "quarkus_")
+ public String tablePrefix;
}
diff --git a/integration-tests/narayana-jta/pom.xml b/integration-tests/narayana-jta/pom.xml
index d993384757fb8..3138ba3c0642b 100644
--- a/integration-tests/narayana-jta/pom.xml
+++ b/integration-tests/narayana-jta/pom.xml
@@ -12,6 +12,10 @@
Quarkus - Integration Tests - Narayana JTA CDI
+
+ io.quarkus
+ quarkus-agroal
+
io.quarkus
quarkus-narayana-jta
@@ -20,6 +24,10 @@
io.quarkus
quarkus-resteasy
+
+ io.quarkus
+ quarkus-jdbc-h2
+
io.quarkus
quarkus-junit5
@@ -37,6 +45,19 @@
+
+ io.quarkus
+ quarkus-agroal-deployment
+ ${project.version}
+ pom
+ test
+
+
+ *
+ *
+
+
+
io.quarkus
quarkus-narayana-jta-deployment
@@ -63,6 +84,19 @@
+
+ io.quarkus
+ quarkus-jdbc-h2-deployment
+ ${project.version}
+ pom
+ test
+
+
+ *
+ *
+
+
+
diff --git a/integration-tests/narayana-jta/src/main/resources/application.properties b/integration-tests/narayana-jta/src/main/resources/application.properties
index 221d51ba83af1..d08ca5fe0cda6 100644
--- a/integration-tests/narayana-jta/src/main/resources/application.properties
+++ b/integration-tests/narayana-jta/src/main/resources/application.properties
@@ -8,4 +8,6 @@ quarkus.console.color=false
quarkus.log.category."com.arjuna".level=INFO
quarkus.log.category."io.quarkus".level=INFO
-quarkus.transaction-manager.object-store-directory=target/tx-object-store
\ No newline at end of file
+quarkus.datasource.db-kind=h2
+
+quarkus.transaction-manager.object-store.directory=target/tx-object-store
diff --git a/integration-tests/narayana-jta/src/test/java/io/quarkus/narayana/jta/BaseTransactionTest.java b/integration-tests/narayana-jta/src/test/java/io/quarkus/narayana/jta/BaseTransactionTest.java
new file mode 100644
index 0000000000000..e6ed7afef9323
--- /dev/null
+++ b/integration-tests/narayana-jta/src/test/java/io/quarkus/narayana/jta/BaseTransactionTest.java
@@ -0,0 +1,12 @@
+package io.quarkus.narayana.jta;
+
+import static org.hamcrest.core.Is.is;
+
+import io.restassured.RestAssured;
+
+public class BaseTransactionTest {
+
+ public void runTest() {
+ RestAssured.when().get("/status").then().body(is("0"));
+ }
+}
diff --git a/integration-tests/narayana-jta/src/test/java/io/quarkus/narayana/jta/JdbcObjectStoreTestProfile.java b/integration-tests/narayana-jta/src/test/java/io/quarkus/narayana/jta/JdbcObjectStoreTestProfile.java
new file mode 100644
index 0000000000000..88fa090fa3a3b
--- /dev/null
+++ b/integration-tests/narayana-jta/src/test/java/io/quarkus/narayana/jta/JdbcObjectStoreTestProfile.java
@@ -0,0 +1,17 @@
+package io.quarkus.narayana.jta;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import io.quarkus.test.junit.QuarkusTestProfile;
+
+public class JdbcObjectStoreTestProfile implements QuarkusTestProfile {
+ @Override
+ public Map getConfigOverrides() {
+ HashMap props = new HashMap<>();
+ props.put("quarkus.transaction-manager.object-store.type", "jdbc");
+ props.put("quarkus.transaction-manager.object-store.create-table", "true");
+ props.put("quarkus.transaction-manager.enable-recovery", "true");
+ return props;
+ }
+}
diff --git a/integration-tests/narayana-jta/src/test/java/io/quarkus/narayana/jta/TransactionJdbcObjectStoreIT.java b/integration-tests/narayana-jta/src/test/java/io/quarkus/narayana/jta/TransactionJdbcObjectStoreIT.java
new file mode 100644
index 0000000000000..c649e3ee5e754
--- /dev/null
+++ b/integration-tests/narayana-jta/src/test/java/io/quarkus/narayana/jta/TransactionJdbcObjectStoreIT.java
@@ -0,0 +1,7 @@
+package io.quarkus.narayana.jta;
+
+import io.quarkus.test.junit.QuarkusIntegrationTest;
+
+@QuarkusIntegrationTest
+public class TransactionJdbcObjectStoreIT extends TransactionJdbcObjectStoreTest {
+}
diff --git a/integration-tests/narayana-jta/src/test/java/io/quarkus/narayana/jta/TransactionJdbcObjectStoreTest.java b/integration-tests/narayana-jta/src/test/java/io/quarkus/narayana/jta/TransactionJdbcObjectStoreTest.java
new file mode 100644
index 0000000000000..fc26432aec1ea
--- /dev/null
+++ b/integration-tests/narayana-jta/src/test/java/io/quarkus/narayana/jta/TransactionJdbcObjectStoreTest.java
@@ -0,0 +1,17 @@
+package io.quarkus.narayana.jta;
+
+import org.junit.jupiter.api.Test;
+
+import io.quarkus.test.common.http.TestHTTPEndpoint;
+import io.quarkus.test.junit.QuarkusTest;
+import io.quarkus.test.junit.TestProfile;
+
+@QuarkusTest
+@TestHTTPEndpoint(TransactionalResource.class)
+@TestProfile(JdbcObjectStoreTestProfile.class)
+public class TransactionJdbcObjectStoreTest extends BaseTransactionTest {
+ @Test
+ public void test() {
+ runTest();
+ }
+}
diff --git a/integration-tests/narayana-jta/src/test/java/io/quarkus/narayana/jta/TransactionalTestCase.java b/integration-tests/narayana-jta/src/test/java/io/quarkus/narayana/jta/TransactionalTestCase.java
index acb77cca6a461..3ec45306b9a63 100644
--- a/integration-tests/narayana-jta/src/test/java/io/quarkus/narayana/jta/TransactionalTestCase.java
+++ b/integration-tests/narayana-jta/src/test/java/io/quarkus/narayana/jta/TransactionalTestCase.java
@@ -1,19 +1,16 @@
package io.quarkus.narayana.jta;
-import static org.hamcrest.core.Is.is;
-
import org.junit.jupiter.api.Test;
import io.quarkus.test.common.http.TestHTTPEndpoint;
import io.quarkus.test.junit.QuarkusTest;
-import io.restassured.RestAssured;
@QuarkusTest
@TestHTTPEndpoint(TransactionalResource.class)
-public class TransactionalTestCase {
+public class TransactionalTestCase extends BaseTransactionTest {
@Test
public void test() {
- RestAssured.when().get("/status").then().body(is("0"));
+ runTest();
}
}