The codebase for the narayana project
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
ArjunaCore JBTM-3049 arjPropertyManager should update all named config bean inst… Aug 22, 2018
ArjunaJTA JBTM-3052 Updated JBoss Parent to version 28 Aug 28, 2018
ArjunaJTS Updated to 5.9.1.Final-SNAPSHOT Jul 5, 2018
STM Merge branch 'master' of https://github.com/jbosstm/narayana Aug 10, 2018
XTS JBTM-3052 Updated JBoss Parent to version 28 Aug 28, 2018
antbuildsystem import from https://svn.jboss.org/repos/labs/labs/jbosstm/trunk r37839 Jan 5, 2012
blacktie JBTM-3052 Updated JBoss Parent to version 28 Aug 28, 2018
code-coverage Updated to 5.9.1.Final-SNAPSHOT Jul 5, 2018
common Updated to 5.9.1.Final-SNAPSHOT Jul 5, 2018
compensations Updated to 5.9.1.Final-SNAPSHOT Jul 5, 2018
ext Updated to 5.9.1.Final-SNAPSHOT Jul 5, 2018
narayana-full JBTM-3052 Updated JBoss Parent to version 28 Aug 28, 2018
osgi Updated to 5.9.1.Final-SNAPSHOT Jul 5, 2018
qa Updated to 5.9.1.Final-SNAPSHOT Jul 5, 2018
rts JBTM-3052 Updated JBoss Parent to version 28 Aug 28, 2018
scripts JWS-1126 Updated to Tomcat 9.0.11 Sep 4, 2018
tools JBTM-3030 Moved Tomcat to https://github.com/web-servers/narayana-tomcat Jul 30, 2018
txbridge Updated to 5.9.1.Final-SNAPSHOT Jul 5, 2018
txframework Updated to 5.9.1.Final-SNAPSHOT Jul 5, 2018
vertx Updated to 5.9.1.Final-SNAPSHOT Jul 5, 2018
.gitignore JBTM-3030 Moved Tomcat to https://github.com/web-servers/narayana-tomcat Jul 30, 2018
LICENSE JBTM-2698 Added a LICENSE file Jun 30, 2016
README.md JBTM-3040 Don't try to build microprofile-lra Jul 16, 2018
build-release-pkgs.xml Updated to 5.9.1.Final-SNAPSHOT Jul 5, 2018
build.bat JBTM-1488 Increase the amount of heap for the build Oct 2, 2017
build.sh BUILD SCRIPT ONLY: Increase amount of memory available to maven Nov 1, 2017
copyright.txt import from https://svn.jboss.org/repos/labs/labs/jbosstm/trunk r37839 Jan 5, 2012
narayana-release-process.sh [JBTM-3011] docker lra image to be pushed during narayana release Apr 13, 2018
pom.xml JBTM-3052 Updated JBoss Parent to version 28 Aug 28, 2018

README.md

Narayana

Getting help

If you need help with using Narayana, please visit our forums at: https://developer.jboss.org/en/jbosstm/

If you think you have found an error in our code, please raise an issue over on: https://issues.jboss.org/browse/JBTM

If you would like to contribute a pull request to help the project out, please sign our CLA over here: https://cla.jboss.org/index.seam (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: https://developer.jboss.org/wiki/PerformanceGatesForAcceptingPerformanceFixesInNarayana

Requirements

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:

-Dorson.jar.location=/full/path/to/checkout/location/ext/

The distribution is then available in:

./narayana-full/target/narayana-full-<VERSION>-bin.zip

Alternatively, the uber jar for JacORB is available here:

./ArjunaJTS/narayana-jts-jacorb/target/narayana-jts-jacorb-<VERSION>.jar

The uber jar for the JDK ORB is available here:

./ArjunaJTS/narayana-jts-idlj/target/narayana-jts-idlj-<VERSION>.jar

The user jar for local JTA is here:

./ArjunaJTA/narayana-jta/target/narayana-jta-<VERSION>.jar

If you just need the facilities provided by ArjunaCore:

./ArjunaCore/arjunacore/target/arjunacore-<VERSION>.jar

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

Code Coverage Testing

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

Checkstyle

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.

Build QA

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

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 jboss.org repositories: http://community.jboss.org/wiki/MavenGettingStarted-Users

Maven is provided in the tools/maven section, though later versions of this may work. Download locations are: http://www.oracle.com/technetwork/java/javase/downloads/index.html http://maven.apache.org/

A handful of unit tests build and run as part of the normal build. Most test coverage is in the form of integration tests which reside in the qa/ directory. These are built but not run automatically. See qa/README.txt for usage.