dev.club β€” where best developers and top companies connect.

dev.club β€” where best developers and top companies connect.Invite only

Request invite

Atomikos TransactionsEssentials: light-weight distributed transactions

Atomikos Logo

Community development "mirror" of atomikos.com/Main/TransactionsEssentials.

New contributors welcome - help us shape transactions for the cloud!

Please star this project to help us grow. Thanks in advance!

New to distributed transactions? Start with our free distributed transactions tutorial.

Highlights

NEW: JakartaEE support

Relevant jars are transformed into jakarta equivalents so we support both Javax and Jakarta.

NOTE: Dual Build Dependencies (javax + jakarta)

Since 6.0 we publish both javax and jakarta variants. To keep this working, some core dependencies are marked as provided and we post-process certain jars with the transformer to produce the jakarta classifier. As a result, some modules cannot express a transitive dependency on others (for example, transactions-jdbc cannot depend transitively on transactions-jta) because the runtime dependency must match the chosen classifier.

If you build or run outside an application server, make sure you add the correct variant of these APIs explicitly.

Use the product BOMs to align versions:

Example usage:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.atomikos</groupId>
      <artifactId>transactions-essentials</artifactId>
      <version>${atomikos.version}</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

Use the jakarta BOM instead if your runtime is jakarta-based:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.atomikos</groupId>
      <artifactId>transactions-essentials-jakarta</artifactId>
      <version>${atomikos.version}</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

NEW: Microservice Support

With microservices, the typical monolith ACID transaction becomes split into 2 or more local transactions, one in each microservice. This can quickly lead to inconsistencies - for instance if there are network timeouts or other failures:

Inconsistent Microservices

Some concrete examples of possible inconsistencies:

We allow 1 global transaction, even across separate microservices and you don't have to code anything for that. In the example shown, a failed call means rollback at microservice 2, and if you want then you can safely try an alternative microservice instead (even within the same global transaction).

This enables safer retries (if you do want to retry - that is your choice) plus the notion of a global commit.

For more information on how to fine-tune microservice transactions: get our free ebook on microservice transaction patterns.

Using TransactionsEssentials

Getting Started

See Getting Started for general documentation.

Documentation

See documentation at www.atomikos.com/Documentation

Code Samples

Runnable example applications live in specs/examples/: JTA, Spring, Hibernate/JPA, PostgreSQL, JMS, and REST/gRPC β€” each a self-contained Maven project you can build and run.

Releases

Check Maven Central

When to Use Atomikos

Atomikos is a good fit when you need distributed transaction coordination across multiple resources. Use it when:

If you only use a single database and don’t need cross-resource atomicity, a local transaction manager is usually sufficient.

Going to production?

This edition (TransactionsEssentials) is free and open source. When you take distributed transactions to production β€” especially on Kubernetes or the cloud β€” you may want shared-database recovery that survives replaced nodes (LogCloud), high availability, and commercial support with an SLA and indemnification. That's Atomikos ExtremeTransactions β€” de-risk your go-live with a free trial.

Improvements in the commercial edition

A lot of improvements have been made in our commercial edition (ExtremeTransactions) β€” see the release notes.

Governance & Participating

Joining

See our Community Page for how to join us.

Building From Source

Pull latest from repo git pull origin master and try mvn clean install -Popensource.

AI Agent Sessions

AI Agent sessions (like Codex or Claude Code) must read USING_AGENTS.md before making changes.

Contributing

The fastest way to contribute is by starring this project. Thank you :-)

See our contributor guidelines for inspiration and guidance.

Code of conduct

See our code of conduct for details and how to report violations.

About This Repository

This GitHub project is merged with - and updated regularly from - our internal development repository to work towards our next open source release (note: stable maintenance releases and our commercial power features are managed outside GitHub).

IMPORTANT: we (Atomikos) don't develop on GitHub ourselves (yet) so you won't see a lot of our commits here - only refreshes when we merge + push to GitHub. That is because at least initially, the sole purpose of this project is to allow interested GitHub community members to fork and contribute useful features to what we have.

Activities here are probably higher when:

After that, we are busy upgrading our customers and on-boarding new customers so you will see less activity here. That's because most customer work is done in our private repositories.

You know how it goes, one always forgets to mention someone - but the following fine people have all delivered memorable technical contributions to this project in one way or another.

So: thank you! (and apologies to the superstars not mentioned here):

License

See our license policy page.

Feedback Wanted!

Do you think something's missing on this page? Please open an issue to let us know!

Copyright (c) 2000-2026, Atomikos - all rights reserved. Visit www.atomikos.com for more...

Join libs.tech

...and unlock some superpowers

GitHub

We won't share your data with anyone else.