Today I’m going to demonstrate how to run the Batch API on JBoss EAP 6. As you probably know, Jboss EAP 6 (and AS 7) features the Java EE 6 API which does not include the Batch API, that is part of Java EE 7.
In order to run the Batch API on JBoss EAP 6 we need to patch the installation of the application server by downloading the backport of Batch API subsystem to available at: https://github.com/fcorneli/jberet-eap6
- Download the latest dist (http://www.e-contract.be/maven2/org/jberet/eap6/eap6-batch-dist/1.0.2/eap6-batch-dist-1.0.2.zip)
- Unzip it under the modules folder of JBoss EAP 6
- Modify the modules/system/layers/base/javaee/api/main/module.xml:
Include the following dependency:
<dependencies> ... <module name="javax.batch.api" export="true"/> </dependencies>
We need to create a configuration ad hoc (or simply change one of your existing configurations):
Create a copy of your configuration file (e.g. standalone.xml):
cp standalone.xml standalone-batch.xml
Now add the batch extension at the top of it:
<extensions> ... <extension module="org.wildfly.extension.batch"/> </extensions>
Next, within your profile (I’ve added it at the beginning) add the batch subsystem:
<subsystem xmlns="urn:jboss:domain:batch:1.0"> <job-repository> <jdbc jndi-name="java:jboss/datasources/ExampleDS"/> </job-repository> <thread-pool> <max-threads count="10"/> <keepalive-time time="30" unit="seconds"/> </thread-pool> </subsystem>
Now start the application server:
standalone.sh -c standalone-batch.xml
Now connect to the CLI and verify that the subsystem batch is available:
[standalone@localhost:9999 /] /subsystem=batch:read-resource { "outcome" => "success", "result" => { "job-repository-type" => "jdbc", "job-repository" => {"jdbc" => undefined}, "thread-factory" => undefined, "thread-pool" => {"batch" => undefined} } }
Congratulations! You have successfully patched EAP 6 to run the Batch API!