The Atomikos Blog
You are here: Blog

How Open Collaboration Made Atomikos Even More Flexible
In modern Java architectures, flexibility isn’t a luxury — it’s a requirement.

18 May 2026 | Guy Pardon | Success stories, Tech tips

In mod­ern Java ar­chi­tec­tures, flex­i­bil­i­ty isn’t a lux­u­ry — it’s a re­quire­ment.

TransactionsEssentials 6.0.1
TransactionsEssentials 6.0.1 release notes

17 April 2026 | Guy Pardon

CORE IMPROVEMENTS: A SIMPLER AND SAFER (AND DOCUMENTED) CONCURRENCY MODEL

This re­lease in­cludes a op­tion­al safer thread­ing and con­cur­ren­cy mod­el for the core en­gine and per­for­mance im­prove­ments that come with it. The fol­low­ing 2 im­prove­ments all con­tribute to this goal, and are ac­ti­vat­ed / dis­abled to­geth­er - via the fol­low­ing fea­ture flag:

com.atomikos.icatch.feature.207056=true

Fea­ture207056
New de­signs for Trans­ac­tionSer­vice and Com­pos­iteTrans­ac­tionMan­ag­er im­ple­men­ta­tions

The new con­cur­ren­cy mod­el is im­ple­ment­ed by 2 new core class­es:

  • De­fault­Trans­ac­tionSer­vice
  • De­fault­Com­pos­iteTrans­ac­tionMan­ag­er

Fea­ture205830
Per­for­mance with con­cur­rent maps

The new core class­es also use con­cur­rent hashmaps for in­creased per­for­mance, as out­lined in this con­tri­bu­tion on GitHub.

CORE IMPROVEMENTS: CORE (SUB) TRANSACTION SUPPORT

Bug207055
Bug in time­out/roll­back of lo­cal sub trans­ac­tion fol­lowed by com­mit of its par­ent

Sever­i­ty:4
Af­fect­ed ver­sion(s):5.0.x, 6.0.x

De­scrip­tion

We now check for time­out of a lo­cal sub trans­ac­tion when the par­ent trans­ac­tion com­mits.

Tech­ni­cal de­tails

Be­fore this fix, a sub trans­ac­tion could time­out but this would not block pre­pare of the par­ent trans­ac­tion, lead­ing to un­nec­es­sary pre­pare work and log warn­ings.

We now check for time­out and fail ear­ly when pre­pare is at­tempt­ed.

Changes im­pact­ing client API

None.

Bug209259
Im­prove thread-safe­ty of CheckedEx­port­ingTrans­ac­tionMan­ag­er

Sever­i­ty:2
Af­fect­ed ver­sion(s):6.0.x

See the full de­tails on GitHub

CONNECTION POOL IMPROVEMENTS

Fea­ture223216
Add sup­port for non-pooled (one-off) con­nec­tion use

You can now use our JTA/XA con­nec­tions with your own con­nec­tion pools.

Tech­ni­cal de­tails

Our JTA/XA con­nec­tion prox­ies would not work with ex­ter­nal pools. This should now be pos­si­ble.

Based on a con­tri­bu­tion from Open J Proxy (OJP) - an open source data­base proxy that sup­ports dis­trib­uted trans­ac­tions.

Cour­tesy of the Open J Proxy team - thanks for con­tribut­ing!

Also see the full de­tails on GitHub.

Changes im­pact­ing client API

None, ex­cept us­ing your own pools if you like, by us­ing AtomikosNonPool­ingDataSourceBean as the data­source.

Bug208965
Bug in bor­row­ing con­nec­tion: make wait­ing for avail­able con­nec­tions fair(er)

Sever­i­ty:3
Af­fect­ed ver­sion(s):6.0.x

De­scrip­tion

We now avoid that a grow­ing pool's con­nec­tions are "hi­jacked" by threads whose re­quests came in lat­er than the wait­ing thread.

Tech­ni­cal de­tails

The de­tails are ex­plained on GitHub.

Changes im­pact­ing client API

None.

INTEGRATION IMPROVEMENTS

Fea­ture222983
Add Spring Boot 4 starter

You can now use Atomikos with Spring Boot 4

Changes im­pact­ing client API

Add the fol­low­ing de­pen­den­cy to your pom in or­der to use this starter:

   <dependency>
     <groupId>com.atomikos</groupId>
     <artifactId>transactions-spring-boot4-starter</artifactId>
     <version>...</version>
   </dependency>

Fea­ture211078
Add Spring Boot 3.4 starter

You can now use Atomikos with Spring Boot 3.4

Changes im­pact­ing client API

Add the fol­low­ing de­pen­den­cy to your pom in or­der to use this starter:

   <dependency>
     <groupId>com.atomikos</groupId>
     <artifactId>transactions-spring-boot3.4-starter</artifactId>
     <version>...</version>
   </dependency>

Fea­ture207758
Add Hiber­nate 7 ex­am­ple

You can now use our Hiber­nate 7 ex­am­ple for in­spi­ra­tion of your project.

Fea­ture201715
Add Jakar­taEE ex­am­ple

You can now check a ba­sic Jakar­taEE ex­am­ple.

Tech­ni­cal de­tails

The 6.0 re­lease line added sup­port for Jakar­taEE, but with­out ex­am­ples so far.

We have now added some.

Changes im­pact­ing client API

None.

Fea­ture203242
Retry ac­quir­ing log file lock on start­up

We now retry ob­tain­ing a file lock on start­up.

Tech­ni­cal de­tails

See the full de­tails on GitHub.

Changes im­pact­ing client API

None.

Bug202466
In­ter­posed Syn­chro­ni­sa­tion not called on reg­u­lar roll­back

Sever­i­ty:4
Af­fect­ed ver­sion(s):6.0.x

De­scrip­tion

In­ter­posed syn­chro­ni­sa­tion in­stances are now also called on reg­u­lar roll­back.

Tech­ni­cal de­tails

For de­tails, see the orig­i­nal re­port on GitHub.

Changes im­pact­ing client API

None.

Bug209260
Move AtomikosSQLEx­cep­tion to pub­lic pack­age

Sever­i­ty:4
Af­fect­ed ver­sion(s):6.0.x

De­scrip­tion

Our AtomikosSQLEx­cep­tion is now in the pub­lic pack­age of mod­ule trans­ac­tions-jdbc.

Tech­ni­cal de­tails

This ex­cep­tion should not be in the "in­ter­nal" pack­age - for in­te­gra­tion with OSGi this is the best so­lu­tion. See the full de­tails on GitHub.

Changes im­pact­ing client API

We don't ex­pect ap­pli­ca­tions to lit­er­al­ly catch this spe­cif­ic ex­cep­tion so the im­pact should be none. If you do catch this ex­cep­tion in your code then you will have to change the im­port from com.atom­ikos.jdbc.in­ter­nal to com.atom­ikos.jdbc.

Bug201646
Spring Boot 2 starter: use jta and jms ver­sions of Spring Boot's POM for the starter project

Sever­i­ty:4
Af­fect­ed ver­sion(s):6.0.x

De­scrip­tion

We (and you) now use the jta and jms ver­sions of Spring Boot's POM for the starter project.

Tech­ni­cal de­tails

The JTA and JMS ver­sion de­pen­den­cies are now aligned with Spring Boot.

We did this al­ready for lat­er Spring Boot in­te­gra­tions, but not yet for Spring Boot 2.

Changes im­pact­ing client API

None.

BugINTERNAL
Use h2 ver­sion com­pat­i­ble with lat­est hi­ber­nate (6) ver­sion

Sever­i­ty:4
Af­fect­ed ver­sion(s):6.0.x

De­scrip­tion

We now use a more re­cent h2 ver­sion.

Tech­ni­cal de­tails

The pom of the Hiber­nate 6 ex­am­ples project has been up­dat­ed to use a bet­ter suit­able h2 ver­sion.

Changes im­pact­ing client API

None.

Sever­i­ty:4
Af­fect­ed ver­sion(s):6.0.x

De­scrip­tion

Cleaned up the pom file for trans­ac­tions-eclipselink.

Tech­ni­cal de­tails

The pom file used to ref­er­ence an ex­tra repos­i­to­ry - but it turns out this was not need­ed with some mi­nor tweaks in the pom.

Changes im­pact­ing client API

None.

BugINTERNAL
OSGi ser­vice name ver­sion is out­dat­ed

Sever­i­ty:4
Af­fect­ed ver­sion(s):6.0.x

De­scrip­tion

The OSGi ser­vice name now has the cor­rect ver­sion.

MISCELLANEOUS

Fea­tureINTERNAL
Add sup­port for fea­ture flags in the con­fig­u­ra­tion prop­er­ties

Fea­tures can now be en­abled/dis­abled via fea­ture flag sup­port in the con­fig­u­ra­tion prop­er­ties:

com.atomikos.icatch.feature.<ID>=...

It can be set to true or false, and helps us with fea­ture flags for risky code changes so we can al­ways fall­back to the pre­vi­ous be­hav­iour.

Bug202474
Im­prove mes­sage when trans­ac­tion was marked for roll­back-only

Sever­i­ty:3
Af­fect­ed ver­sion(s):5.0.x, 6.0.x

De­scrip­tion

You now get a de­scrip­tive mes­sage that sig­nals roll­back-only in­stead of sug­gest­ing a time­out.

Tech­ni­cal de­tails

The cus­tomer re­port is in­clud­ed with the full de­tails be­low:

some of our applications occasionally log Exceptions like this during execution:

WARN  c.a.j.internal.AtomikosSQLException - The transaction has timed out - try increasing the timeout if needed
WARN  c.a.j.i.AtomikosJdbcConnectionProxy - Error enlisting in transaction - connection might be broken? Please check the logs for more information...

com.atomikos.jdbc.internal.AtomikosSQLException: The transaction has timed out - try increasing the timeout if needed
        at com.atomikos.jdbc.internal.AtomikosSQLException.throwAtomikosSQLException(AtomikosSQLException.java:29)
        at com.atomikos.jdbc.internal.AtomikosSQLException.throwAtomikosSQLException(AtomikosSQLException.java:40)
        at com.atomikos.jdbc.internal.AtomikosJdbcConnectionProxy.enlist(AtomikosJdbcConnectionProxy.java:97)
        at com.atomikos.jdbc.internal.AtomikosJdbcConnectionProxy.updateTransactionContext(AtomikosJdbcConnectionProxy.java:61)
        at com.atomikos.jdbc.internal.AbstractJdbcConnectionProxy.prepareStatement(AbstractJdbcConnectionProxy.java:64)

At first glance, developers thought of an transaction timeout problem, trying to increase the tx-timeout. But in this, timeout increasing did not help.  The reason for this exception was previous SQLException which went through a Spring @Transactional  method, marking the actual Transaction ‚rollback-only‘.

Changes im­pact­ing client API

Clear­er re­ports in the log.

Bug207146
Avoid keep­ing the same open JDBC state­ments mul­ti­ple times

Sever­i­ty:3
Af­fect­ed ver­sion(s):6.0.x

De­scrip­tion

We now avoid adding the same state­ment many times to the col­lec­tion of open state­ments.

Tech­ni­cal de­tails

We keep a col­lec­tion of open JDBC state­ments so they can be closed when the JDBC con­nec­tion is closed.

Our Ab­strac­tJd­bcCon­nec­tionProxy class used to add a same state­ment mul­ti­ple times to the col­lec­tion of open state­ments and could lead to high mem­o­ry con­sump­tion over time. This was fixed.

Changes im­pact­ing client API

None.

Bug207950
Un­nec­es­sary XA re­fresh on clos­ing re­source

Sever­i­ty:3
Af­fect­ed ver­sion(s):6.0.x

De­scrip­tion

We now avoid use­less calls to the XARe­source on close.

Tech­ni­cal de­tails

Clos­ing a re­source would also re­move it from the Con­fig­u­ra­tion like this:

    public static RecoverableResource removeResource ( String name )
    {
        RecoverableResource ret = null;
        if ( name != null ) {
              ret = (RecoverableResource) resources_.remove ( name );
              if ( ret != null ) resourceList_.remove ( ret );

        }
        return ret;
    }

In par­tic­u­lar, the ad­di­tion­al re­moval from the re­sourceList would trig­ger a call to equals, which in turn ex­pects the XARe­source to be avail­able. But this is prob­lem­at­ic if the re­source was al­ready closed.

So­lu­tion: we re­moved the re­sourceList since it was not re­al­ly re­quired.

Changes im­pact­ing client API

None.

Bug212902
Im­prove ex­cep­tion mes­sage on en­list / time­out

Sever­i­ty:4
Af­fect­ed ver­sion(s):6.0.x

De­scrip­tion

You can now see more de­scrip­tive state in­for­ma­tion to as­sess time­out pos­si­bil­i­ty.

Tech­ni­cal de­tails

In­stead of sug­gest­ing a time­out, we now hint at time­out and show the ac­tu­al trans­ac­tion state in the ex­cep­tion. This al­lows de­vel­op­ers to as­sess the right ac­tion­able steps to take.

For more info, see GitHub

Changes im­pact­ing client API

None.

ExtremeTransactions 6.0.116
Release notes for ExtremeTransactions 6.0.116

12 March 2026 | Guy Pardon | Release notes

Re­lease notes for Ex­tremeTrans­ac­tions 6.1.116

The "Complexity Tax": Why Manual Data Integrity is Costing You More Than You Think
Why your microservices are still losing data (and how to fix it)

27 January 2026 | Guy Pardon | Tech tips, Vision | , ,

Stop gam­bling with your data in­tegri­ty.

From de­bunk­ing the "XA is slow" myth to solv­ing cloud-na­tive re­cov­ery with LogCloud, we are show­ing you how to re­claim your de­vel­op­er pro­duc­tiv­i­ty and bring 100% atom­ic­i­ty to your mi­croser­vices.

Corporate Information

Atomikos Corporate Headquarters
Hoveniersstraat, 39/1, 2800
Mechelen, Belgium

Contact Us

Copyright 2026 Atomikos BVBA | Our Privacy Policy
This page was cached on 23 May 2026 - 19:54.
By using this site you agree to our cookies. More info. That's Fine