As TASKANA is a pure Java application, there is a huge variety of options how to deploy and use TASKANA on Wildfly.
However we do have an integration test to ensure a compatibility with Wildfly. In this setup we use the REST module of TASKANA and deploy it to Wildfly as a web application. You have to keep in mind that the TASKANA REST module is based on the Spring Framework. The setup we are using can be found on GitHub: https://github.com/Taskana/taskana/tree/master/rest/taskana-rest-spring-example-wildfly
This setup is described in more detail on this page. However you are free and encouraged to change each configuration to your own needs.
Application Assembly
Required Dependencies
To create your own Wildfly application, you need to add this dependency for the REST controllers including the entire TASKANA functionality:
<dependency> <groupId>pro.taskana</groupId> <artifactId>taskana-rest-spring</artifactId> </dependency>
If you want the UI to be part of the application, add this dependency as well:
<dependency> <groupId>pro.taskana</groupId> <artifactId>taskana-web</artifactId> </dependency>
Thats’s all.
For the example application, we use this Maven dependency, as it contains the sample data in addition to the two mentioned dependencies above:
<dependency> <groupId>pro.taskana</groupId> <artifactId>taskana-rest-spring-example-common</artifactId> </dependency>
You can find the entire project structure on GitHub: https://github.com/Taskana/taskana/blob/master/rest/taskana-rest-spring-example-wildfly/pom.xml
Security
TASKANA requires a initialized JAAS Subject to work - at least as long you want to use the security features.
In our setup we have a Elytron setup, which ensures that all requests are authenticated and authorized before entering our application. We can find the details of the current user in the SecurityIdentity Elytron provides. To make this information accessible to TASKANA, we have created the ElytronToJaasFilter, to initialize a valid Subject from it. This filter is configured in our WildflyWebSecurityConfig:
@Override protected void configure(HttpSecurity http) throws Exception { http.addFilter(jaasApiIntegrationFilter()) .addFilterAfter(new ElytronToJaasFilter(), JaasApiIntegrationFilter.class) .csrf() .disable(); }
Configuration
application.properties
You need to configure on the appplication side is the datasource and the database schema to use:
######## Taskana DB ####### datasource.jndi=java:/TaskanaDS/H2 taskana.schemaName=TASKANA
Furthermore, if you are using LDAP, you need to configure the LDAP access:
####### properties to connect to LDAP taskana.ldap.serverUrl=ldap://localhost:10389 taskana.ldap.bindDn=uid=admin taskana.ldap.bindPassword=secret taskana.ldap.baseDn=ou=Test,O=TASKANA taskana.ldap.userSearchBase=cn=users taskana.ldap.userSearchFilterName=objectclass taskana.ldap.userSearchFilterValue=person taskana.ldap.userFirstnameAttribute=givenName taskana.ldap.userLastnameAttribute=sn taskana.ldap.userIdAttribute=uid taskana.ldap.groupSearchBase= taskana.ldap.groupSearchFilterName=objectclass taskana.ldap.groupSearchFilterValue=groupOfUniqueNames taskana.ldap.groupNameAttribute=cn taskana.ldap.minSearchForLength=3 taskana.ldap.maxNumberOfReturnedAccessIds=50 taskana.ldap.groupsOfUser=uniquemember
These properties are used to do a LDAP lookup from the AccessIdController, as it is required for the Admin UI for example. It has nothing to do with the authentication of a user, which is handled by Elytron as described above.
You can find the entire example file on GitHub: https://github.com/Taskana/taskana/blob/master/rest/taskana-rest-spring-example-wildfly/src/main/resources/application.properties
web.xml
Nothing specific to TASKANA but you might need to specify the realm on Wildfly. In our example we do need to do this to make the FORM login work:
<login-config> <auth-method>FORM</auth-method> <realm-name>taskanaApplicationDomain</realm-name> <form-login-config> <form-login-page>/login</form-login-page> <form-error-page>/login?error</form-error-page> </form-login-config> </login-config>
jboss-web.xml
In this file you meght want to change the context-root and and security-domain to match your configuration:
<context-root>/taskana</context-root> <security-domain>taskanaApplicationDomain</security-domain>