diff --git a/lib/taskana-cdi/README.md b/lib/taskana-cdi/README.md
new file mode 100644
index 000000000..d5a46aa4d
--- /dev/null
+++ b/lib/taskana-cdi/README.md
@@ -0,0 +1,168 @@
+# taskana-cdi
+
+this module is for EJB deployments.
+
+## Testing procedure
+
+1. deploy wildfly server locally
+2. replace h2 with latest version
+3. start wildfly
+4. deploy ear
+5. test application
+
+### deploy wildfly server locally
+
+we extract the wildfly server into the target directory via maven configuration
+
+```xml
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+ ${version.maven.dependency}
+
+
+ unpack-wildfly
+ process-test-classes
+
+ unpack
+
+
+
+
+ org.wildfly
+ wildfly-dist
+ ${version.wildfly}
+ zip
+ false
+ ${project.build.directory}
+
+
+
+
+ .
+ .
+ .
+
+
+```
+
+### 2. replace h2 with latest version
+
+for our tests we need the latest h2 version, so we need to replace the h2 jar in wildfly.
+
+this happens in 2 steps.
+
+first extract the dependency into the correct directory
+
+```xml
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+ ${version.maven.dependency}
+
+ .
+ .
+ .
+
+ copy-latest-h2-db-driver
+ process-test-classes
+
+ copy
+
+
+
+
+ com.h2database
+ h2
+
+ ${project.build.directory}/wildfly-${version.wildfly}/modules/system/layers/base/com/h2database/h2/main
+
+
+
+
+
+
+
+```
+
+second step is to copy the `src/test/resources/module.xml` to required directory
+
+```xml
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+ ${version.maven.resources}
+
+
+ copy-h2-module-xml
+ process-test-classes
+
+ copy-resources
+
+
+
+ ${project.build.directory}/wildfly-${version.wildfly}/modules/system/layers/base/com/h2database/h2/main
+
+
+
+ src/test/resources
+
+ module.xml
+
+
+
+
+
+
+
+```
+
+### 3. start wildfly
+
+starting and stopping wildfly happens with [arquillian](https://arquillian.org/)
+
+```java
+@RunWith(Arquillian.class)
+public class TaskanaProducersTest {}
+
+```
+
+the file `src/test/resources/arquillian.xml` contains additional server start settings. change vm settings here for remote debugging.
+
+the file `src/test/resources/int-test-standalone.xml` conatins the wildfly server config. Here are the datasources configured, for example.
+
+### 4. deploy ear
+
+create the ear deployment happens inside the testcase
+
+```java
+ @Deployment(testable = false)
+ public static Archive> createDeployment() throws Exception {
+ EnterpriseArchive deployment = ShrinkWrap.create(EnterpriseArchive.class, "taskana.ear");
+
+ File[] libs =
+ Maven.resolver()
+ .loadPomFromFile("pom.xml")
+ .importRuntimeAndTestDependencies()
+ .resolve()
+ .withTransitivity()
+ .asFile();
+ deployment.addAsLibraries(libs);
+
+ JavaArchive ejbModule = ShrinkWrap.create(JavaArchive.class, "taskana.jar");
+ ejbModule.addClasses(TaskanaProducers.class, TaskanaEjb.class);
+ ejbModule.addAsResource("taskana.properties");
+ deployment.addAsModule(ejbModule);
+
+ WebArchive webArchive =
+ ShrinkWrap.create(WebArchive.class, "taskana.war")
+ .addClasses(TaskanaCdiTestRestController.class, RestApplication.class)
+ .addAsWebInfResource("beans.xml")
+ .addAsWebInfResource("int-test-jboss-web.xml", "jboss-web.xml");
+ deployment.addAsModule(webArchive);
+
+ deployment.addAsManifestResource("beans.xml");
+ return deployment;
+ }
+```
+
diff --git a/lib/taskana-cdi/pom.xml b/lib/taskana-cdi/pom.xml
index 6c3aa7afd..63ef061a8 100644
--- a/lib/taskana-cdi/pom.xml
+++ b/lib/taskana-cdi/pom.xml
@@ -14,6 +14,24 @@
../pom.xml
+
+
+
+ org.wildfly.bom
+ wildfly-javaee8
+ ${version.wildfly}
+ import
+ pom
+
+
+ org.jboss.arquillian
+ arquillian-bom
+ ${version.arquillian}
+ import
+ pom
+
+
+
pro.taskana
@@ -58,15 +76,8 @@
test
- io.thorntail
- jaxrs
- ${version.thorntail}
- test
-
-
- io.thorntail
- cdi
- ${version.thorntail}
+ javax.servlet
+ javax.servlet-api
test
@@ -75,15 +86,24 @@
test
- io.thorntail
- arquillian
- ${version.thorntail}
+ org.jboss.arquillian.junit
+ arquillian-junit-container
test
- org.jboss.arquillian.junit
- arquillian-junit-container
- ${version.arquillian}
+ org.jboss.shrinkwrap.resolver
+ shrinkwrap-resolver-impl-maven
+ test
+
+
+ org.jboss.shrinkwrap.resolver
+ shrinkwrap-resolver-api-maven
+ test
+
+
+ org.wildfly.arquillian
+ wildfly-arquillian-container-managed
+ 3.0.1.Final
test
@@ -91,14 +111,73 @@
- io.thorntail
- thorntail-maven-plugin
- ${version.thorntail}
+ org.apache.maven.plugins
+ maven-dependency-plugin
+ ${version.maven.dependency}
+ unpack-wildfly
+ process-test-classes
- package
+ unpack
+
+
+
+ org.wildfly
+ wildfly-dist
+ ${version.wildfly}
+ zip
+ false
+ ${project.build.directory}
+
+
+
+
+
+ copy-latest-h2-db-driver
+ process-test-classes
+
+ copy
+
+
+
+
+ com.h2database
+ h2
+
+ ${project.build.directory}/wildfly-${version.wildfly}/modules/system/layers/base/com/h2database/h2/main
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+ ${version.maven.resources}
+
+
+ copy-h2-module-xml
+ process-test-classes
+
+ copy-resources
+
+
+
+ ${project.build.directory}/wildfly-${version.wildfly}/modules/system/layers/base/com/h2database/h2/main
+
+
+
+ src/test/resources
+
+ module.xml
+
+
+
+
diff --git a/lib/taskana-cdi/src/main/resources/META-INF/beans.xml b/lib/taskana-cdi/src/main/resources/META-INF/beans.xml
index a2425b8d8..b02d9578c 100644
--- a/lib/taskana-cdi/src/main/resources/META-INF/beans.xml
+++ b/lib/taskana-cdi/src/main/resources/META-INF/beans.xml
@@ -3,5 +3,6 @@
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+ http://java.sun.com/xml/ns/javaee/beans_1_0.xsd"
+ version="1.2" bean-discovery-mode="all">
diff --git a/lib/taskana-cdi/src/test/java/pro/taskana/common/internal/TaskanaProducersTest.java b/lib/taskana-cdi/src/test/java/pro/taskana/common/internal/TaskanaProducersTest.java
index 6f2ba30a3..e438ef42c 100644
--- a/lib/taskana-cdi/src/test/java/pro/taskana/common/internal/TaskanaProducersTest.java
+++ b/lib/taskana-cdi/src/test/java/pro/taskana/common/internal/TaskanaProducersTest.java
@@ -2,6 +2,7 @@ package pro.taskana.common.internal;
import static org.assertj.core.api.Assertions.assertThat;
+import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
@@ -19,15 +20,21 @@ import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.Archive;
import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.spec.EnterpriseArchive;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.jboss.shrinkwrap.resolver.api.maven.Maven;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.wildfly.swarm.undertow.WARArchive;
+import pro.taskana.RestApplication;
+import pro.taskana.TaskanaCdiTestRestController;
+import pro.taskana.TaskanaEjb;
@RunWith(Arquillian.class)
public class TaskanaProducersTest {
- private static final String REST_TEST_URL = "http://127.0.0.1:8090/rest/test";
+ private static final String REST_TEST_URL = "http://127.0.0.1:8080/taskana/rest/test";
private static final HttpClient HTTP_CLIENT =
HttpClient.newBuilder()
@@ -37,13 +44,30 @@ public class TaskanaProducersTest {
@Deployment(testable = false)
public static Archive> createDeployment() throws Exception {
- WARArchive deployment = ShrinkWrap.create(WARArchive.class);
- deployment.addPackage("pro.taskana");
- deployment.addClass(TaskanaProducers.class);
- deployment.addAllDependencies();
- deployment.addAsResource("META-INF/beans.xml");
- deployment.addAsResource("taskana.properties");
- deployment.addAsResource("project-defaults.yml");
+ EnterpriseArchive deployment = ShrinkWrap.create(EnterpriseArchive.class, "taskana.ear");
+
+ File[] libs =
+ Maven.resolver()
+ .loadPomFromFile("pom.xml")
+ .importRuntimeAndTestDependencies()
+ .resolve()
+ .withTransitivity()
+ .asFile();
+ deployment.addAsLibraries(libs);
+
+ JavaArchive ejbModule = ShrinkWrap.create(JavaArchive.class, "taskana.jar");
+ ejbModule.addClasses(TaskanaProducers.class, TaskanaEjb.class);
+ ejbModule.addAsResource("taskana.properties");
+ deployment.addAsModule(ejbModule);
+
+ WebArchive webArchive =
+ ShrinkWrap.create(WebArchive.class, "taskana.war")
+ .addClasses(TaskanaCdiTestRestController.class, RestApplication.class)
+ .addAsWebInfResource("META-INF/beans.xml", "beans.xml")
+ .addAsWebInfResource("int-test-jboss-web.xml", "jboss-web.xml");
+ deployment.addAsModule(webArchive);
+
+ deployment.addAsManifestResource("META-INF/beans.xml", "beans.xml");
return deployment;
}
@@ -85,8 +109,8 @@ public class TaskanaProducersTest {
return DriverManager.getConnection(
"jdbc:h2:~/taskana-h2-data/testdb;NON_KEYWORDS=KEY,VALUE;AUTO_SERVER=TRUE;"
+ "IGNORECASE=TRUE;LOCK_MODE=0",
- "SA",
- "SA");
+ "sa",
+ "");
}
private int countTasksByName(String taskName) throws Exception {
diff --git a/lib/taskana-cdi/src/test/resources/arquillian.xml b/lib/taskana-cdi/src/test/resources/arquillian.xml
new file mode 100644
index 000000000..e5fd388c3
--- /dev/null
+++ b/lib/taskana-cdi/src/test/resources/arquillian.xml
@@ -0,0 +1,23 @@
+
+
+
+
+ target/wildfly-15.0.1.Final
+ ../../../../src/test/resources/int-test-standalone.xml
+
+
+
+
+
+
+
+ -Dh2.bindAddress=127.0.0.1
+ -Djava.util.logging.manager=org.jboss.logmanager.LogManager
+
+
+
+
\ No newline at end of file
diff --git a/lib/taskana-cdi/src/test/resources/int-test-jboss-web.xml b/lib/taskana-cdi/src/test/resources/int-test-jboss-web.xml
new file mode 100644
index 000000000..a4c595ccc
--- /dev/null
+++ b/lib/taskana-cdi/src/test/resources/int-test-jboss-web.xml
@@ -0,0 +1,7 @@
+
+
+ /taskana
+
diff --git a/lib/taskana-cdi/src/test/resources/int-test-standalone.xml b/lib/taskana-cdi/src/test/resources/int-test-standalone.xml
new file mode 100644
index 000000000..40c308e41
--- /dev/null
+++ b/lib/taskana-cdi/src/test/resources/int-test-standalone.xml
@@ -0,0 +1,834 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;
+
+ h2
+
+ sa
+
+
+
+
+ jdbc:h2:~/taskana-h2-data/testdb;NON_KEYWORDS=KEY,VALUE;AUTO_SERVER=TRUE;IGNORECASE=TRUE;LOCK_MODE=0
+
+ h2
+
+ sa
+
+
+
+ false
+
+
+
+
+
+ org.h2.jdbcx.JdbcDataSource
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${jboss.bind.address:127.0.0.1}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lib/taskana-cdi/src/test/resources/module.xml b/lib/taskana-cdi/src/test/resources/module.xml
new file mode 100644
index 000000000..75ede73ba
--- /dev/null
+++ b/lib/taskana-cdi/src/test/resources/module.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/lib/taskana-cdi/src/test/resources/project-defaults.yml b/lib/taskana-cdi/src/test/resources/project-defaults.yml
deleted file mode 100644
index 30950dd30..000000000
--- a/lib/taskana-cdi/src/test/resources/project-defaults.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-swarm:
- port:
- offset: 10
- datasources:
- data-sources:
- TestDS:
- driver-name: myh2
- connection-url: jdbc:h2:~/taskana-h2-data/testdb;NON_KEYWORDS=KEY,VALUE;AUTO_SERVER=TRUE;IGNORECASE=TRUE;LOCK_MODE=0
- user-name: SA
- password: SA
- jdbc-drivers:
- myh2:
- driver-class-name: org.h2.Driver
- xa-datasource-name: org.h2.jdbcx.JdbcDataSource
- driver-module-name: com.h2database.h2
-