Skip to content
The codebase for the narayana project
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
ArjunaCore [JBTM-3138] XTS bridge 1PC consistency failure Jun 3, 2019
ArjunaJTA [JBTM-3148] returning correct error code on one phase commit failure Jun 4, 2019
ArjunaJTS JBTM-3146 Make the parsing of XML and Java archives more flexible Jun 17, 2019
STM JBTM-3105 STM with nested transactions and fix for taxonomy test failure Apr 16, 2019
XTS [JBTM-3138] XTS bridge 1PC consistency failure Jun 3, 2019
antbuildsystem import from r37839 Jan 5, 2012
blacktie JBTM-3136 Use https for dependencies Apr 18, 2019
code-coverage Updated to 5.9.6.Final-SNAPSHOT Mar 28, 2019
common JBTM-3146 Make the parsing of XML and Java archives more flexible Jun 17, 2019
compensations Updated to 5.9.6.Final-SNAPSHOT Mar 28, 2019
ext Updated to 5.9.6.Final-SNAPSHOT Mar 28, 2019
narayana-full JBTM-3150 Migrate from swarm to thorntail Jun 4, 2019
osgi Updated to 5.9.6.Final-SNAPSHOT Mar 28, 2019
qa [JBTM-3130] update JNDI manager for newer mysql and oracle drivers Apr 4, 2019
rts JBTM-3145 (MP-LRA issue146) allow LRA compensators to be called with … Jun 21, 2019
scripts [JBTM-3154] ./ path for -f maven test does not work in 3.6.1 Jun 17, 2019
tools JBTM-3150 Upgrade maven version to 3.6.1 Jun 4, 2019
txbridge [JBTM-3138] XTS bridge 1PC consistency failure Jun 3, 2019
txframework Updated to 5.9.6.Final-SNAPSHOT Mar 28, 2019
vertx JBTM-3129 Remove the maven surefire report plugin Apr 8, 2019
.gitignore [.gitignore] audit.log to .gitignore Feb 21, 2019
LICENSE JBTM-2698 Added a LICENSE file Jun 30, 2016 [JBTM-3119] adding few sentences about tests in Narayana to Mar 11, 2019
build-release-pkgs.xml Updated to 5.9.6.Final-SNAPSHOT Mar 28, 2019
build.bat JBTM-1488 Increase the amount of heap for the build Oct 2, 2017 JBTM-3150 Migrate from swarm to thorntail Jun 4, 2019
copyright.txt import from r37839 Jan 5, 2012 JBTM-3136 Do not use the default M2 repo for build dependencies Apr 18, 2019
pom.xml JBTM-3146 Maintain JDK8 compatibility during the build Jun 17, 2019



Twitter:, using twitter handle #narayanaio

Getting help

If you need help with using Narayana, please visit our forums at:

If you think you have found an error in our code, please raise an issue over on:

If you would like to contribute a pull request to help the project out, please sign our CLA over here: (the project is JBoss Transactions)

If you have a performance optimization that you would like to suggest to us, please read our document over here:


To build this project JDK 1.8 (or greater) is required.

When building on Mac OS make sure that JAVA_HOME is set to use JDK 1.8:

export JAVA_HOME=`/usr/libexec/java_home -v 1.8` 

Building Naryana

To build Narayana you should call:

./build.[sh|bat] <maven_goals, default is install>

To build Narayana without running tests you can call:

./build.[sh|bat] -DskipTests

If you are building the "community" profile and are using a different maven installation to the one provided in tools/maven you need to make sure you have the following options:


The distribution is then available in:


Alternatively, the uber jar for JacORB is available here:


The uber jar for the JDK ORB is available here:


The user jar for local JTA is here:


If you just need the facilities provided by ArjunaCore:


Building specific components

If you would like to build an individual module (say arjuna) with its dependencies you would type:

./build.[sh|bat] [clean] install -pl :arjuna -am

Other interesting specific components can be built using:

ArjunaCore: ./build.[sh|bat] -am -pl :arjunacore

NarayanaJTA: ./build.[sh|bat] -am -pl :narayana-jta

NarayanaJTS (jacorb): ./build.[sh|bat] -am -pl :narayana-jts-jacorb -Didlj-disabled=true

NarayanaJTS (idlj): ./build.[sh|bat] -am -pl :narayana-jts-idlj -Djacorb-disabled=true

NarayanaJTS (ibmorb): ./build.[sh|bat] -am -pl :narayana-jts-ibmorb -Dibmorb-enabled=true (requires IBM jdk)

XTS: ./build.[sh|bat] -am -pl :jboss-xts

STM: ./build.[sh|bat] -am -pl :stm

LRA: ./build.[sh|bat] -am -f rts/lra

Testing Narayana

There are three types of tests in the Narayana repository.

  • Unit tests which are run with maven surefire and they do not need any special setup. Unit tests are run automatically when Narayana is build and if it's not specified otherwise (e.g. with maven flag -DskipTests)

  • Integration tests are run with maven surefire or maven failsafe. They are run with use of the Arquillian and you need to explicitly enable them by activating profile arq (maven flag -Parq). There is a difficulty that each module have different requirements for the integration tests to be run. Most of them requires environmental variable JBOSS_HOME to be defined and points to an existing directory of WildFly. But some of them requires additional steps for WildFly being configured. The best way to find out details is to check the script which is used to run CI tests.

  • Integration qa suite resides in the directory qa/ and contains form of integration tests. These are built but not run automatically. See qa/README.txt for usage. In brevity launching tests is about running commands:

    cd qa/
    ant -Ddriver.url=file:///home/hudson/dbdrivers get.drivers dist
    ant -f run-tests.xml ci-tests

Code Coverage Testing

  ./build.[sh|bat] -PcodeCoverage (the output is in ${}/coverage.html)


Narayana expect usage of the style of code defined by WildFly checkstyle (maven artifact org.wildfly.checkstyle:wildfly-checkstyle-config).

Because of historical reasons the checkstyle is applied only at newly developed Narayana modules. The old ones are left without strict code style rules. There is only a recommendation to follow code style used in the particular file you edit.

Checkstyle checking is bound to maven install phase and if the file does not comply with the defined rules the compilation fails.

To get your developer life easier use the checkstyle plugins for your IDE

The WildFly provides a formatter complying with the checkstyle rules. If interested check the IDE configs at project wildfly-core.

Now The Gory Details.

Each module contains a set of maven build scripts, which chiefly just inherits and selectively overrides the parent pom.xml Understanding this approach requires some knowledge of maven's inheritance.

Top level maven builds always start from scratch. Individual module builds on the other hand are incremental, such that you may rebuild a single module by traversing into its directory and running 'mvn', but only if you have first built any pre-req modules e.g. via a parent build.

In addition to driving the build of individual modules, the build files in the bundles directories (ArjunaCore, ArjunaJTA, ArjunaJTS) contain steps to assemble the release directory structure, including docs, scripts, config files and other ancillaries. These call each other in some cases, as JTS is largely a superset of JTA and JTA in turn a superset of Core.

3rd party dependency management is done via maven. Note that versions of most 3rd party components are resolved via the JBossAS component-matrix pom.xml, even when building standalone releases. The version of JBossAS to use is determined by the top level pom.xml You may need to set up maven to use the repositories:

Maven is provided in the tools/maven section, though later versions of this may work. Download locations are:

You can’t perform that action at this time.