Closes #2135 replace thorntail with arquillian test in taskana-cdi

thorntail is completly removed
deploy wildfly locally
run wildfly with arquillian
deploy ear to wildfly
This commit is contained in:
arolfes 2023-03-21 13:42:22 +01:00 committed by Jörg Heffner
parent 752089f705
commit 2e1407055f
9 changed files with 1180 additions and 47 deletions

168
lib/taskana-cdi/README.md Normal file
View File

@ -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
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>${version.maven.dependency}</version>
<executions>
<execution>
<id>unpack-wildfly</id>
<phase>process-test-classes</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.wildfly</groupId>
<artifactId>wildfly-dist</artifactId>
<version>${version.wildfly}</version>
<type>zip</type>
<overWrite>false</overWrite>
<outputDirectory>${project.build.directory}</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
.
.
.
</executions>
</plugin>
```
### 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
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>${version.maven.dependency}</version>
<executions>
.
.
.
<execution>
<id>copy-latest-h2-db-driver</id>
<phase>process-test-classes</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<outputDirectory>
${project.build.directory}/wildfly-${version.wildfly}/modules/system/layers/base/com/h2database/h2/main
</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
```
second step is to copy the `src/test/resources/module.xml` to required directory
```xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>${version.maven.resources}</version>
<executions>
<execution>
<id>copy-h2-module-xml</id>
<phase>process-test-classes</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>
${project.build.directory}/wildfly-${version.wildfly}/modules/system/layers/base/com/h2database/h2/main
</outputDirectory>
<resources>
<resource>
<directory>src/test/resources</directory>
<includes>
<include>module.xml</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
```
### 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;
}
```

View File

@ -14,6 +14,24 @@
<relativePath>../pom.xml</relativePath> <relativePath>../pom.xml</relativePath>
</parent> </parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.wildfly.bom</groupId>
<artifactId>wildfly-javaee8</artifactId>
<version>${version.wildfly}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.jboss.arquillian</groupId>
<artifactId>arquillian-bom</artifactId>
<version>${version.arquillian}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>pro.taskana</groupId> <groupId>pro.taskana</groupId>
@ -58,15 +76,8 @@
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>io.thorntail</groupId> <groupId>javax.servlet</groupId>
<artifactId>jaxrs</artifactId> <artifactId>javax.servlet-api</artifactId>
<version>${version.thorntail}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.thorntail</groupId>
<artifactId>cdi</artifactId>
<version>${version.thorntail}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
@ -75,15 +86,24 @@
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>io.thorntail</groupId> <groupId>org.jboss.arquillian.junit</groupId>
<artifactId>arquillian</artifactId> <artifactId>arquillian-junit-container</artifactId>
<version>${version.thorntail}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.jboss.arquillian.junit</groupId> <groupId>org.jboss.shrinkwrap.resolver</groupId>
<artifactId>arquillian-junit-container</artifactId> <artifactId>shrinkwrap-resolver-impl-maven</artifactId>
<version>${version.arquillian}</version> <scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.shrinkwrap.resolver</groupId>
<artifactId>shrinkwrap-resolver-api-maven</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.wildfly.arquillian</groupId>
<artifactId>wildfly-arquillian-container-managed</artifactId>
<version>3.0.1.Final</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
</dependencies> </dependencies>
@ -91,14 +111,73 @@
<build> <build>
<plugins> <plugins>
<plugin> <plugin>
<groupId>io.thorntail</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>thorntail-maven-plugin</artifactId> <artifactId>maven-dependency-plugin</artifactId>
<version>${version.thorntail}</version> <version>${version.maven.dependency}</version>
<executions> <executions>
<execution> <execution>
<id>unpack-wildfly</id>
<phase>process-test-classes</phase>
<goals> <goals>
<goal>package</goal> <goal>unpack</goal>
</goals> </goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.wildfly</groupId>
<artifactId>wildfly-dist</artifactId>
<version>${version.wildfly}</version>
<type>zip</type>
<overWrite>false</overWrite>
<outputDirectory>${project.build.directory}</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
<execution>
<id>copy-latest-h2-db-driver</id>
<phase>process-test-classes</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<outputDirectory>
${project.build.directory}/wildfly-${version.wildfly}/modules/system/layers/base/com/h2database/h2/main
</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>${version.maven.resources}</version>
<executions>
<execution>
<id>copy-h2-module-xml</id>
<phase>process-test-classes</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>
${project.build.directory}/wildfly-${version.wildfly}/modules/system/layers/base/com/h2database/h2/main
</outputDirectory>
<resources>
<resource>
<directory>src/test/resources</directory>
<includes>
<include>module.xml</include>
</includes>
</resource>
</resources>
</configuration>
</execution> </execution>
</executions> </executions>
</plugin> </plugin>

View File

@ -3,5 +3,6 @@
xmlns="http://java.sun.com/xml/ns/javaee" xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation=" xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee 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">
</beans> </beans>

View File

@ -2,6 +2,7 @@ package pro.taskana.common.internal;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.net.URI; import java.net.URI;
import java.net.http.HttpClient; 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.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.Archive; import org.jboss.shrinkwrap.api.Archive;
import org.jboss.shrinkwrap.api.ShrinkWrap; 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.BeforeClass;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; 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) @RunWith(Arquillian.class)
public class TaskanaProducersTest { 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 = private static final HttpClient HTTP_CLIENT =
HttpClient.newBuilder() HttpClient.newBuilder()
@ -37,13 +44,30 @@ public class TaskanaProducersTest {
@Deployment(testable = false) @Deployment(testable = false)
public static Archive<?> createDeployment() throws Exception { public static Archive<?> createDeployment() throws Exception {
WARArchive deployment = ShrinkWrap.create(WARArchive.class); EnterpriseArchive deployment = ShrinkWrap.create(EnterpriseArchive.class, "taskana.ear");
deployment.addPackage("pro.taskana");
deployment.addClass(TaskanaProducers.class); File[] libs =
deployment.addAllDependencies(); Maven.resolver()
deployment.addAsResource("META-INF/beans.xml"); .loadPomFromFile("pom.xml")
deployment.addAsResource("taskana.properties"); .importRuntimeAndTestDependencies()
deployment.addAsResource("project-defaults.yml"); .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; return deployment;
} }
@ -85,8 +109,8 @@ public class TaskanaProducersTest {
return DriverManager.getConnection( return DriverManager.getConnection(
"jdbc:h2:~/taskana-h2-data/testdb;NON_KEYWORDS=KEY,VALUE;AUTO_SERVER=TRUE;" "jdbc:h2:~/taskana-h2-data/testdb;NON_KEYWORDS=KEY,VALUE;AUTO_SERVER=TRUE;"
+ "IGNORECASE=TRUE;LOCK_MODE=0", + "IGNORECASE=TRUE;LOCK_MODE=0",
"SA", "sa",
"SA"); "");
} }
private int countTasksByName(String taskName) throws Exception { private int countTasksByName(String taskName) throws Exception {

View File

@ -0,0 +1,23 @@
<arquillian xmlns="http://jboss.org/schema/arquillian"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jboss.org/schema/arquillian
http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
<defaultProtocol type="Servlet 3.0"/>
<container qualifier="wildfly" default="true">
<configuration>
<property name="jbossHome">target/wildfly-15.0.1.Final</property>
<property
name="serverConfig">../../../../src/test/resources/int-test-standalone.xml
</property>
<!-- <property name="javaVmArguments">-->
<!-- -Dh2.bindAddress=127.0.0.1-->
<!-- -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y-->
<!-- -Djava.util.logging.manager=org.jboss.logmanager.LogManager-->
<!-- </property>-->
<property name="javaVmArguments">
-Dh2.bindAddress=127.0.0.1
-Djava.util.logging.manager=org.jboss.logmanager.LogManager
</property>
</configuration>
</container>
</arquillian>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web version="7.2"
xmlns="http://www.jboss.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss-web_7_2.xsd">
<context-root>/taskana</context-root>
</jboss-web>

View File

@ -0,0 +1,834 @@
<?xml version='1.0' encoding='UTF-8'?>
<server xmlns="urn:jboss:domain:7.0">
<extensions>
<extension module="org.jboss.as.clustering.infinispan"/>
<extension module="org.jboss.as.connector"/>
<extension module="org.jboss.as.deployment-scanner"/>
<extension module="org.jboss.as.ee"/>
<extension module="org.jboss.as.ejb3"/>
<extension module="org.jboss.as.jaxrs"/>
<extension module="org.jboss.as.jdr"/>
<extension module="org.jboss.as.jmx"/>
<extension module="org.jboss.as.jpa"/>
<extension module="org.jboss.as.jsf"/>
<extension module="org.jboss.as.logging"/>
<extension module="org.jboss.as.mail"/>
<extension module="org.jboss.as.naming"/>
<extension module="org.jboss.as.pojo"/>
<extension module="org.jboss.as.remoting"/>
<extension module="org.jboss.as.sar"/>
<extension module="org.jboss.as.security"/>
<extension module="org.jboss.as.transactions"/>
<extension module="org.jboss.as.webservices"/>
<extension module="org.jboss.as.weld"/>
<extension module="org.wildfly.extension.batch.jberet"/>
<extension
module="org.wildfly.extension.bean-validation"/>
<extension
module="org.wildfly.extension.core-management"/>
<extension module="org.wildfly.extension.elytron"/>
<extension module="org.wildfly.extension.io"/>
<extension
module="org.wildfly.extension.request-controller"/>
<extension
module="org.wildfly.extension.security.manager"/>
<extension module="org.wildfly.extension.undertow"/>
</extensions>
<management>
<security-realms>
<security-realm name="ManagementRealm">
<authentication>
<properties path="mgmt-users.properties"
relative-to="jboss.server.config.dir"/>
<local default-user="$local"
skip-group-loading="true"/>
</authentication>
<authorization map-groups-to-roles="false">
<properties path="mgmt-groups.properties"
relative-to="jboss.server.config.dir"/>
</authorization>
</security-realm>
<security-realm name="ApplicationRealm">
<server-identities>
<ssl>
<keystore path="application.keystore"
relative-to="jboss.server.config.dir"
keystore-password="password" alias="server"
key-password="password"
generate-self-signed-certificate-host="localhost"/>
</ssl>
</server-identities>
<authentication>
<properties
path="application-users.properties"
relative-to="jboss.server.config.dir"/>
<local default-user="$local" allowed-users="*"
skip-group-loading="true"/>
</authentication>
<authorization>
<properties
path="application-roles.properties"
relative-to="jboss.server.config.dir"/>
</authorization>
</security-realm>
</security-realms>
<audit-log>
<formatters>
<json-formatter name="json-formatter"/>
</formatters>
<handlers>
<file-handler name="file"
formatter="json-formatter" path="audit-log.log"
relative-to="jboss.server.data.dir"/>
</handlers>
<logger log-boot="true" log-read-only="false"
enabled="false">
<handlers>
<handler name="file"/>
</handlers>
</logger>
</audit-log>
<management-interfaces>
<http-interface
http-authentication-factory="management-http-authentication">
<http-upgrade enabled="true"
sasl-authentication-factory="management-sasl-authentication"/>
<socket-binding http="management-http"/>
</http-interface>
</management-interfaces>
<access-control provider="simple">
<role-mapping>
<role name="SuperUser">
<include>
<user name="$local"/>
</include>
</role>
</role-mapping>
</access-control>
</management>
<profile>
<subsystem xmlns="urn:jboss:domain:logging:5.0">
<console-handler name="CONSOLE">
<level name="ALL"/>
<formatter>
<named-formatter
name="COLOR-PATTERN"/>
</formatter>
</console-handler>
<periodic-rotating-file-handler
name="FILE" autoflush="true">
<formatter>
<named-formatter name="PATTERN"/>
</formatter>
<file relative-to="jboss.server.log.dir"
path="server.log"/>
<suffix value=".yyyy-MM-dd"/>
<append value="true"/>
</periodic-rotating-file-handler>
<logger category="com.arjuna">
<level name="WARN"/>
</logger>
<logger category="org.jboss.as.config">
<level name="INFO"/>
</logger>
<logger category="sun.rmi">
<level name="WARN"/>
</logger>
<logger category="pro.taskana"
use-parent-handlers="true">
<level name="DEBUG"/>
</logger>
<logger category="org.springframework"
use-parent-handlers="true">
<level name="INFO"/>
</logger>
<logger category="org.springframework.web"
use-parent-handlers="true">
<level name="INFO"/>
</logger>
<logger category="org.slf4j"
use-parent-handlers="true">
<level name="INFO"/>
</logger>
<logger category="org.springframework.security"
use-parent-handlers="true">
<level name="INFO"/>
</logger>
<logger category="org.jboss.security"
use-parent-handlers="true">
<level name="INFO"/>
</logger>
<logger category="org.jboss.as.security"
use-parent-handlers="true">
<level name="INFO"/>
</logger>
<logger category="org.picketbox"
use-parent-handlers="true">
<level name="INFO"/>
</logger>
<logger
category="org.jboss.as.domain.management.security"
use-parent-handlers="true">
<level name="INFO"/>
</logger>
<logger category="org.wildfly.security"
use-parent-handlers="true">
<level name="INFO"/>
</logger>
<logger category="org.wildfly.elytron"
use-parent-handlers="true">
<level name="INFO"/>
</logger>
<logger category="org.apache.catalina"
use-parent-handlers="true">
<level name="INFO"/>
</logger>
<logger category="org.wildfly.extension.undertow"
use-parent-handlers="true">
<level name="INFO"/>
</logger>
<root-logger>
<level name="INFO"/>
<handlers>
<handler name="CONSOLE"/>
<handler name="FILE"/>
</handlers>
</root-logger>
<formatter name="PATTERN">
<pattern-formatter
pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n"/>
</formatter>
<formatter name="COLOR-PATTERN">
<pattern-formatter
pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n"/>
</formatter>
</subsystem>
<subsystem xmlns="urn:jboss:domain:batch-jberet:2.0">
<default-job-repository
name="in-memory"/>
<default-thread-pool name="batch"/>
<job-repository name="in-memory">
<in-memory/>
</job-repository>
<thread-pool name="batch">
<max-threads count="10"/>
<keepalive-time time="30" unit="seconds"/>
</thread-pool>
</subsystem>
<subsystem
xmlns="urn:jboss:domain:bean-validation:1.0"/>
<subsystem
xmlns="urn:jboss:domain:core-management:1.0"/>
<subsystem xmlns="urn:jboss:domain:datasources:5.0">
<datasources>
<datasource
jndi-name="java:jboss/datasources/ExampleDS"
pool-name="ExampleDS" enabled="true"
use-java-context="true">
<connection-url>
jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;
</connection-url>
<driver>h2</driver>
<security>
<user-name>sa</user-name>
<password></password>
</security>
</datasource>
<datasource jta="true"
jndi-name="java:jboss/datasources/TestDS"
pool-name="TASKANA H2 Datasource"
enabled="true"
use-ccm="false"
use-java-context="true">
<connection-url>jdbc:h2:~/taskana-h2-data/testdb;NON_KEYWORDS=KEY,VALUE;AUTO_SERVER=TRUE;IGNORECASE=TRUE;LOCK_MODE=0
</connection-url>
<driver>h2</driver>
<security>
<user-name>sa</user-name>
<password></password>
</security>
<validation>
<background-validation>false
</background-validation>
</validation>
</datasource>
<drivers>
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource
</xa-datasource-class>
</driver>
</drivers>
</datasources>
</subsystem>
<subsystem
xmlns="urn:jboss:domain:deployment-scanner:2.0">
<deployment-scanner path="deployments"
relative-to="jboss.server.base.dir" scan-interval="5000"
runtime-failure-causes-rollback="${jboss.deployment.scanner.rollback.on.failure:false}"/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:ee:4.0">
<spec-descriptor-property-replacement>false
</spec-descriptor-property-replacement>
<concurrent>
<context-services>
<context-service name="default"
jndi-name="java:jboss/ee/concurrency/context/default"
use-transaction-setup-provider="true"/>
</context-services>
<managed-thread-factories>
<managed-thread-factory
name="default"
jndi-name="java:jboss/ee/concurrency/factory/default"
context-service="default"/>
</managed-thread-factories>
<managed-executor-services>
<managed-executor-service
name="default"
jndi-name="java:jboss/ee/concurrency/executor/default"
context-service="default"
hung-task-threshold="60000"
keepalive-time="5000"/>
</managed-executor-services>
<managed-scheduled-executor-services>
<managed-scheduled-executor-service
name="default"
jndi-name="java:jboss/ee/concurrency/scheduler/default"
context-service="default"
hung-task-threshold="60000"
keepalive-time="3000"/>
</managed-scheduled-executor-services>
</concurrent>
<default-bindings
context-service="java:jboss/ee/concurrency/context/default"
datasource="java:jboss/datasources/ExampleDS"
managed-executor-service="java:jboss/ee/concurrency/executor/default"
managed-scheduled-executor-service="java:jboss/ee/concurrency/scheduler/default"
managed-thread-factory="java:jboss/ee/concurrency/factory/default"/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:ejb3:5.0">
<session-bean>
<stateless>
<bean-instance-pool-ref
pool-name="slsb-strict-max-pool"/>
</stateless>
<stateful default-access-timeout="5000"
cache-ref="simple"
passivation-disabled-cache-ref="simple"/>
<singleton default-access-timeout="5000"/>
</session-bean>
<pools>
<bean-instance-pools>
<strict-max-pool
name="slsb-strict-max-pool"
derive-size="from-worker-pools"
instance-acquisition-timeout="5"
instance-acquisition-timeout-unit="MINUTES"/>
<strict-max-pool
name="mdb-strict-max-pool"
derive-size="from-cpu-count"
instance-acquisition-timeout="5"
instance-acquisition-timeout-unit="MINUTES"/>
</bean-instance-pools>
</pools>
<caches>
<cache name="simple"/>
<cache name="distributable"
passivation-store-ref="infinispan"
aliases="passivating clustered"/>
</caches>
<passivation-stores>
<passivation-store name="infinispan"
cache-container="ejb" max-size="10000"/>
</passivation-stores>
<async thread-pool-name="default"/>
<timer-service thread-pool-name="default"
default-data-store="default-file-store">
<data-stores>
<file-data-store
name="default-file-store"
path="timer-service-data"
relative-to="jboss.server.data.dir"/>
</data-stores>
</timer-service>
<remote connector-ref="http-remoting-connector"
thread-pool-name="default">
<channel-creation-options>
<option name="READ_TIMEOUT"
value="${prop.remoting-connector.read.timeout:20}"
type="xnio"/>
<option name="MAX_OUTBOUND_MESSAGES"
value="1234" type="remoting"/>
</channel-creation-options>
</remote>
<thread-pools>
<thread-pool name="default">
<max-threads count="10"/>
<keepalive-time time="100"
unit="milliseconds"/>
</thread-pool>
</thread-pools>
<default-security-domain
value="other"/>
<default-missing-method-permissions-deny-access
value="true"/>
<log-system-exceptions value="true"/>
</subsystem>
<subsystem xmlns="urn:wildfly:elytron:3.0"
final-providers="combined-providers"
disallowed-providers="OracleUcrypto">
<providers>
<aggregate-providers
name="combined-providers">
<providers name="elytron"/>
<providers name="openssl"/>
</aggregate-providers>
<provider-loader name="elytron"
module="org.wildfly.security.elytron"/>
<provider-loader name="openssl"
module="org.wildfly.openssl"/>
</providers>
<audit-logging>
<file-audit-log name="local-audit"
path="audit.log" relative-to="jboss.server.log.dir"
format="JSON"/>
</audit-logging>
<security-domains>
<security-domain
name="ApplicationDomain"
default-realm="ApplicationRealm"
permission-mapper="default-permission-mapper">
<realm name="ApplicationRealm"
role-decoder="groups-to-roles"/>
<realm name="local"/>
</security-domain>
<security-domain name="ManagementDomain"
default-realm="ManagementRealm"
permission-mapper="default-permission-mapper">
<realm name="ManagementRealm"
role-decoder="groups-to-roles"/>
<realm name="local"
role-mapper="super-user-mapper"/>
</security-domain>
<security-domain name="taskanaLdapSD"
default-realm="taskanaLR"
permission-mapper="default-permission-mapper">
<realm name="taskanaLR"
role-decoder="from-roles-attribute"/>
</security-domain>
</security-domains>
<security-realms>
<identity-realm name="local"
identity="$local"/>
<properties-realm
name="ApplicationRealm">
<users-properties
path="application-users.properties"
relative-to="jboss.server.config.dir"
digest-realm-name="ApplicationRealm"/>
<groups-properties
path="application-roles.properties"
relative-to="jboss.server.config.dir"/>
</properties-realm>
<properties-realm
name="ManagementRealm">
<users-properties
path="mgmt-users.properties"
relative-to="jboss.server.config.dir"
digest-realm-name="ManagementRealm"/>
<groups-properties
path="mgmt-groups.properties"
relative-to="jboss.server.config.dir"/>
</properties-realm>
<ldap-realm name="taskanaLR"
dir-context="taskanaDC">
<identity-mapping
rdn-identifier="uid"
use-recursive-search="false"
search-base-dn="cn=users,ou=Test,O=TASKANA">
<attribute-mapping>
<attribute to="Roles"
filter="(&amp;(objectClass=groupofuniquenames)(uniquemember={1}))"
filter-base-dn="ou=Test,O=TASKANA"/>
</attribute-mapping>
<user-password-mapper
from="userPassword"/>
</identity-mapping>
</ldap-realm>
</security-realms>
<mappers>
<simple-permission-mapper
name="default-permission-mapper"
mapping-mode="first">
<permission-mapping>
<principal name="anonymous"/>
<permission
class-name="org.wildfly.extension.batch.jberet.deployment.BatchPermission"
module="org.wildfly.extension.batch.jberet"
target-name="*"/>
<permission
class-name="org.wildfly.transaction.client.RemoteTransactionPermission"
module="org.wildfly.transaction.client"/>
<permission
class-name="org.jboss.ejb.client.RemoteEJBPermission"
module="org.jboss.ejb-client"/>
</permission-mapping>
<permission-mapping
match-all="true">
<permission
class-name="org.wildfly.security.auth.permission.LoginPermission"/>
<permission
class-name="org.wildfly.extension.batch.jberet.deployment.BatchPermission"
module="org.wildfly.extension.batch.jberet"
target-name="*"/>
<permission
class-name="org.wildfly.transaction.client.RemoteTransactionPermission"
module="org.wildfly.transaction.client"/>
<permission
class-name="org.jboss.ejb.client.RemoteEJBPermission"
module="org.jboss.ejb-client"/>
</permission-mapping>
</simple-permission-mapper>
<constant-realm-mapper
name="local" realm-name="local"/>
<simple-role-decoder
name="groups-to-roles" attribute="groups"/>
<simple-role-decoder
name="from-roles-attribute" attribute="Roles"/>
<constant-role-mapper
name="super-user-mapper">
<role name="SuperUser"/>
</constant-role-mapper>
<constant-role-mapper
name="user-mapper">
<role name="user"/>
</constant-role-mapper>
</mappers>
<http>
<http-authentication-factory
name="management-http-authentication"
security-domain="ManagementDomain"
http-server-mechanism-factory="global">
<mechanism-configuration>
<mechanism mechanism-name="DIGEST">
<mechanism-realm
realm-name="ManagementRealm"/>
</mechanism>
</mechanism-configuration>
</http-authentication-factory>
<http-authentication-factory
name="taskana-ldap-http-auth"
security-domain="taskanaLdapSD"
http-server-mechanism-factory="global">
<mechanism-configuration>
<mechanism mechanism-name="BASIC">
<mechanism-realm
realm-name="taskanaApplicationDomain"/>
</mechanism>
</mechanism-configuration>
</http-authentication-factory>
<provider-http-server-mechanism-factory
name="global"/>
</http>
<sasl>
<sasl-authentication-factory
name="management-sasl-authentication"
sasl-server-factory="configured"
security-domain="ManagementDomain">
<mechanism-configuration>
<mechanism
mechanism-name="JBOSS-LOCAL-USER"
realm-mapper="local"/>
<mechanism mechanism-name="DIGEST-MD5">
<mechanism-realm
realm-name="ManagementRealm"/>
</mechanism>
</mechanism-configuration>
</sasl-authentication-factory>
<sasl-authentication-factory
name="application-sasl-authentication"
sasl-server-factory="configured"
security-domain="ApplicationDomain">
<mechanism-configuration>
<mechanism
mechanism-name="JBOSS-LOCAL-USER"
realm-mapper="local"/>
<mechanism mechanism-name="DIGEST-MD5">
<mechanism-realm
realm-name="ApplicationRealm"/>
</mechanism>
</mechanism-configuration>
</sasl-authentication-factory>
<configurable-sasl-server-factory
name="configured" sasl-server-factory="elytron">
<properties>
<property
name="wildfly.sasl.local-user.default-user"
value="$local"/>
</properties>
</configurable-sasl-server-factory>
<mechanism-provider-filtering-sasl-server-factory
name="elytron" sasl-server-factory="global">
<filters>
<filter provider-name="WildFlyElytron"/>
</filters>
</mechanism-provider-filtering-sasl-server-factory>
<provider-sasl-server-factory
name="global"/>
</sasl>
<dir-contexts>
<dir-context name="taskanaDC"
url="ldap://127.0.0.1:10389" principal="uid=admin">
<credential-reference
clear-text="secret"/>
</dir-context>
</dir-contexts>
</subsystem>
<subsystem xmlns="urn:jboss:domain:infinispan:6.0">
<cache-container name="server"
default-cache="default"
module="org.wildfly.clustering.server">
<local-cache name="default">
<transaction mode="BATCH"/>
</local-cache>
</cache-container>
<cache-container name="web"
default-cache="passivation"
module="org.wildfly.clustering.web.infinispan">
<local-cache name="passivation">
<locking isolation="REPEATABLE_READ"/>
<transaction mode="BATCH"/>
<file-store passivation="true"
purge="false"/>
</local-cache>
</cache-container>
<cache-container name="ejb" aliases="sfsb"
default-cache="passivation"
module="org.wildfly.clustering.ejb.infinispan">
<local-cache name="passivation">
<locking isolation="REPEATABLE_READ"/>
<transaction mode="BATCH"/>
<file-store passivation="true"
purge="false"/>
</local-cache>
</cache-container>
<cache-container name="hibernate"
module="org.hibernate.infinispan">
<local-cache name="entity">
<transaction mode="NON_XA"/>
<object-memory size="10000"/>
<expiration max-idle="100000"/>
</local-cache>
<local-cache name="local-query">
<object-memory size="10000"/>
<expiration max-idle="100000"/>
</local-cache>
<local-cache name="timestamps"/>
</cache-container>
</subsystem>
<subsystem xmlns="urn:jboss:domain:io:3.0">
<worker name="default"/>
<buffer-pool name="default"/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jaxrs:1.0"/>
<subsystem xmlns="urn:jboss:domain:jca:5.0">
<archive-validation enabled="true"
fail-on-error="true" fail-on-warn="false"/>
<bean-validation enabled="true"/>
<default-workmanager>
<short-running-threads>
<core-threads count="50"/>
<queue-length count="50"/>
<max-threads count="50"/>
<keepalive-time time="10"
unit="seconds"/>
</short-running-threads>
<long-running-threads>
<core-threads count="50"/>
<queue-length count="50"/>
<max-threads count="50"/>
<keepalive-time time="10"
unit="seconds"/>
</long-running-threads>
</default-workmanager>
<cached-connection-manager/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jdr:1.0"/>
<subsystem xmlns="urn:jboss:domain:jmx:1.3">
<expose-resolved-model/>
<expose-expression-model/>
<remoting-connector/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jpa:1.1">
<jpa default-datasource=""
default-extended-persistence-inheritance="DEEP"/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jsf:1.1"/>
<subsystem xmlns="urn:jboss:domain:mail:3.0">
<mail-session name="default"
jndi-name="java:jboss/mail/Default">
<smtp-server
outbound-socket-binding-ref="mail-smtp"/>
</mail-session>
</subsystem>
<subsystem xmlns="urn:jboss:domain:naming:2.0">
<remote-naming/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:pojo:1.0"/>
<subsystem xmlns="urn:jboss:domain:remoting:4.0">
<http-connector
name="http-remoting-connector" connector-ref="default"
security-realm="ApplicationRealm"/>
</subsystem>
<subsystem
xmlns="urn:jboss:domain:request-controller:1.0"/>
<subsystem
xmlns="urn:jboss:domain:resource-adapters:5.0"/>
<subsystem xmlns="urn:jboss:domain:sar:1.0"/>
<subsystem xmlns="urn:jboss:domain:security:2.0">
<security-domains>
<security-domain name="other"
cache-type="default">
<authentication>
<login-module code="Remoting"
flag="optional">
<module-option
name="password-stacking"
value="useFirstPass"/>
</login-module>
<login-module code="RealmDirect"
flag="required">
<module-option
name="password-stacking"
value="useFirstPass"/>
</login-module>
</authentication>
</security-domain>
<security-domain name="jboss-web-policy"
cache-type="default">
<authorization>
<policy-module code="Delegating"
flag="required"/>
</authorization>
</security-domain>
<security-domain name="jboss-ejb-policy" cache-type="default">
<authorization>
<policy-module code="Delegating" flag="required"/>
</authorization>
</security-domain>
</security-domains>
</subsystem>
<subsystem
xmlns="urn:jboss:domain:security-manager:1.0">
<deployment-permissions>
<maximum-set>
<permission
class="java.security.AllPermission"/>
</maximum-set>
</deployment-permissions>
</subsystem>
<subsystem xmlns="urn:jboss:domain:transactions:4.0">
<core-environment>
<process-id>
<uuid/>
</process-id>
</core-environment>
<recovery-environment
socket-binding="txn-recovery-environment"
status-socket-binding="txn-status-manager"/>
<object-store path="tx-object-store"
relative-to="jboss.server.data.dir"/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:undertow:6.0">
<buffer-cache name="default"/>
<server name="default-server">
<http-listener name="default"
socket-binding="http" redirect-socket="https"
enable-http2="true"/>
<https-listener name="https"
socket-binding="https"
security-realm="ApplicationRealm"
enable-http2="true"/>
<host name="default-host" alias="localhost">
<location name="/"
handler="welcome-content"/>
<filter-ref name="server-header"/>
<filter-ref name="x-powered-by-header"/>
<http-invoker
security-realm="ApplicationRealm"/>
</host>
</server>
<servlet-container name="default">
<jsp-config/>
<websockets/>
</servlet-container>
<handlers>
<file name="welcome-content"
path="${jboss.home.dir}/welcome-content"/>
</handlers>
<filters>
<response-header name="server-header"
header-name="Server" header-value="WildFly/11"/>
<response-header
name="x-powered-by-header"
header-name="X-Powered-By" header-value="Undertow/1"/>
</filters>
<application-security-domains>
<application-security-domain
name="taskanaApplicationDomain"
http-authentication-factory="taskana-ldap-http-auth"/>
</application-security-domains>
</subsystem>
<subsystem xmlns="urn:jboss:domain:webservices:2.0">
<wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host>
<endpoint-config
name="Standard-Endpoint-Config"/>
<endpoint-config
name="Recording-Endpoint-Config">
<pre-handler-chain
name="recording-handlers"
protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM">
<handler name="RecordingHandler"
class="org.jboss.ws.common.invocation.RecordingServerHandler"/>
</pre-handler-chain>
</endpoint-config>
<client-config name="Standard-Client-Config"/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:weld:4.0"/>
</profile>
<interfaces>
<interface name="management">
<inet-address
value="${jboss.bind.address.management:127.0.0.1}"/>
</interface>
<interface name="public">
<inet-address
value="${jboss.bind.address:127.0.0.1}"/>
</interface>
</interfaces>
<socket-binding-group name="standard-sockets"
default-interface="public"
port-offset="${jboss.socket.binding.port-offset:0}">
<socket-binding name="management-http"
interface="management"
port="${jboss.management.http.port:9990}"/>
<socket-binding name="management-https"
interface="management"
port="${jboss.management.https.port:9993}"/>
<socket-binding name="ajp"
port="${jboss.ajp.port:8009}"/>
<socket-binding name="http"
port="${jboss.http.port:8080}"/>
<socket-binding name="https"
port="${jboss.https.port:8443}"/>
<socket-binding name="txn-recovery-environment"
port="4712"/>
<socket-binding name="txn-status-manager"
port="4713"/>
<outbound-socket-binding
name="mail-smtp">
<remote-destination host="localhost"
port="25"/>
</outbound-socket-binding>
</socket-binding-group>
</server>

View File

@ -0,0 +1,13 @@
<?xml version='1.0' encoding='UTF-8'?>
<module name="com.h2database.h2" xmlns="urn:jboss:module:1.5">
<resources>
<resource-root path="h2-2.1.214.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
<module name="javax.servlet.api" optional="true"/>
</dependencies>
</module>

View File

@ -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