ExtremeTransactions 3.9.39

An intermediate build to extend support for customers who are migrating to 4.0.x or 5.0.x

179439: Support 3.9.x for a bit longer by building with Java 7

This release was built with Java 7 and compiler settings for Java 6 source/target compatibility. Although the 3.9 is deprecated, this should allow existing customers on 3.9.x some breathing room to upgrade to a more recent release. New releases of 3.9.x will no longer be made with Java 6 (unlike before) so some testing is recommended if you are still on 3.9.x and/or Java 6.

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.38

Improved diagnosis for timeout situations…

171192: Timeout of active transaction: log coordinator ID and stack trace of active thread

We now log more context in case of timeouts: the coordinator ID and the stack trace of the application thread - making it easier to detect blocking situations that make the transaction time out.

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.37

Improved clarity for transactions marked as rollback only

157962: Improve warning message for transactions marked as rollback-only

The warning message for transactions marked as rollback-only was confusing since it suggested timeout as the cause, whereas this situation also happens on errors during the pre-commit phase. This has now been improved.

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.36

Removed excessive logging to System.out…

156003: Avoid verbose logging to System.out in the LoggerFactory

Some people complained about us logging to System.out when init-ing the logging subsystem, like this:

No org.slf4j.impl.StaticLoggerBinder found in ClassPath, trying with log4j2...
No org.apache.logging.log4j.Logger found found in ClassPath, trying with log4j...

This has now been fixed: we no longer log to System.out in that case.

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.34

We've released ExtremeTransactions release 3.9.34

151452: More efficient equals and hashCode implementations in TxState

These methods have been implemented in a more efficient manner which should improve performance.

151459: Improve TransactionInProgressException throwing for JMS

We no longer fill in the nested stack trace when throwing this exception, which should optimise performance with Spring message listener contains.

151842: Unnecessary ClassNotFoundExceptions thrown during proxy creation

We've optimised the creating of proxy objects by smarter class loading.

151916: Avoid unnecessary isSameRM calls on the XAResource

We now try to avoid isSameRM calls when possible.

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.33

These are the release for ExtremeTransactions 3.9.33

This release is for customers only. Not a customer yet? No problem, request a quote here:

Send me a quote

150704: Refine exception handling for case 149031

We've refined a previous fix to catch Throwable rather than Exception - to tolerate differences in non-compliant JDBC driver behaviour.

150490: Deadlock during close and commit on multithreaded JMS connection use

In some (rare) cases there would be a deadlock on multithreaded JMS connection use. This has been fixed.

ExtremeTransactions 3.9.32

These are the release notes for ExtremeTransactions 3.9.32

Available to customers only. Want to become a customer?

Send me a quote

147443: Add support for Log4j2

Added automatic detection of Log4j2 in the classpath

24346: AtomikosDataSourceBean property to avoid TMJOIN by delaying XAResource.delistment until commit time

The more exotic TMJOIN behaviour is now disabled when setting supportsTmJoin=false on the AtomikosDataSourceBean class. This increases compatibility with SQLServer and also increases performance for transactions that have multiple statements going to the backend with "aggressive connection release" in ORM tools like Hibernate.

149031: JDBC purge closed statements: avoid looping if driver does not support isClosed

When the JDBC driver does not support the isClosed method then the list of open statements will keep growing in the AbstractConnectionProxy class. This in turn will lead to expensive and useless iterating over an ever-growing list of statements for every statement being created. This is bad for performance and causes up to 80% of the execution time being spent in the purging method doing useless iterations.

We now stop trying as soon as the isClosed call throws any exception. While the list of statements still keeps growing, we at least avoid iterating uselessly.

148782: MSDTC crashes with aggressive connection releasing and extensive TMJOIN usage

MSDTC creates "orphaned" resources on the XAConnection when TMJOIN is used. With a lot of these, the MSDTC server can crash. You can now avoid this by setting supportsTmJoin=false on the AtomikosDataSourceBean.

ExtremeTransactions 3.9.31

These are the release notes for ExtremeTransactions 3.9.31

141015: CleanupPendingTransactionContextFilter: avoid starting up the transaction service

Fixed a bug where this filter could init the transaction core - thereby preventing application-specific initialisation overrides via our API.

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.30

These are the release notes for ExtremeTransactions 3.9.30

143963: AtomikosDataSourceBean: add "supportsTmJoin" config option so TMJOIN can be disabled

A specific usage pattern of our datasource (ds) may involve:

//start transaction
Connection c = ds.getConnection();
//DB Access 1: do stuff
c.close() 
c = ds.getConnection();
//DB Access 2: do more stuff
c.close()
//commit transaction

By default, DB Access 2 will reuse the XA branch started by DB Access 1, via the TMJOIN flag (XA-specific). It should be possible to disallow TMJOIN and connection recycling when the database does not support it (like SQLServer).

The connection pool can retrieve/check this from the configured datasource properties before deciding to recycle a connection. This will effectively avoid TMJOIN, and DB Access 2 will use a new, different XA branch.

Highlights for how to make this work with SQLServer in terms of AtomikosDataSourceBean setup:

ds.setStartNewXaBranchFlags(SQLServerXAResource.SSTRANSTIGHTLYCPLD);
ds.setSupportsTmJoin(false);

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.29

These are the release notes for ExtremeTransactions 3.9.29

143008: JDBC connection proxy: don't keep pending statements if they are closed

Fixed release 3.9.28 compatibility with JDBC drivers lower than JDBC4.

Install this fix if you have memory problems due to long transactions with many statements that exhaust RAM.

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.28

143008: JDBC connection proxy: don't keep pending statements if they are closed

Our connection proxy keeps a list of pending statements so they can be closed automatically when needed. By default, this would also include statements that are already closed by the application. This causes needless memory usage overhead, and has now been fixed: statements that were closed by the application are purged from the list of pending statements.

Upgrade to this version if you have memory problems due to long transactions with many JDBC statements.

WARNING: do NOT upgrade if your JDBC driver is not JDBC 4 compliant.

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.27

140407: Unnecessary synchronisation overhead in AtomikosNonXADataSourceBean

Removed unnecessary synchronisation overhead to optimize performance.

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.26

IMPORTANT: this release is a highly recommended fix for your installation if you are using release 3.7.8 or later. If you don't upgrade then you risk losing part of the transaction.

140169: XAResource.commit succeeds for rollback exception during XAResource.end

During an earlier fix for case 102827 in release 3.7.8 (connection leak for errors during XAResource.end), we disabled throwing exceptions originating from XAResource.end, assuming that XAResource.prepare would subsequently refuse to prepare or commit the Xid in question. It turns out that there was a problem with this assumption and the way it was implemented in the code, which caused this issue. This has been fixed, and of course we've added a test to prevent future regression.

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.25

139936: Memory leak in AtomikosJmsConnectionProxy

There was a bug in removing obsolete sessions, caused by incompatibility of the equals method and dynamic proxies. This has now been fixed.

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.24

139964 Allow for optional SQL statement to initialise new connections in the pool

We added a new optional DataSource config property called initConnectionSql. When set, the connection pool will trigger the specified SQL when a new connection is added to the pool.

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.23

139076 Add support for Hazelcast as XAResource in a JTA transaction

It is now possible to use Hazelcast distributed caching as part of your transactions. If there is a rollback then any changes in the cache will rollback too. This is useful if you want to keep your cache consistent with your messaging and/or database, and it reduces the need for manual evicting from the cache.

This functionality has been tested against Hazelcast 3.5, which also includes XA support. Nevertheless, for recovery purposes you still need Atomikos functionality, covered in this release.

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.22

136943: PropertyUtils should support all Java primitive types

Some primitive types were as yet unsupported, like long / byte / floating point / char. Support for these has now been added.

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.21

136133: Closing a connection handle a second time should not affect intermediate reuse

Under certain circumstances, closing a connection twice could affect intermediate reuse from the pool. This has now been fixed.

136354: LogUtil: add dependency on transactions-jdbc so non-xa log content can be deserialised

Non-XA participants could not be deserialised from the logs without this extra dependency.

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.20

135749: Module transactions-writeahead: remove obsolete license check

Our write-ahead module contained an obsolete license check that prevented it from working with recent customers who no longer have/need license files in their installation.

135736: Extend LogUtil to show log entry statistics

Our log utility now also shows statistics on the average byte size of log entries.

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.19

135326: Document JMX configuration of log level for logback

The configuration details to allow JMX-level changes of the log level have been added to the spring JMX example and to the wiki documentation.

135327: Show heuristic messages in LogUtil

The LogUtil application now also shows any heuristic messages.

135290: XAResource.commit(): refine INFO logging

When warnings are not appropriate, commit-level are logged is INFO anyway - to allow diagnosing the details by our support team.

135291: XAResource.rollback() and XAResource.prepare() refine exception logging

Exceptions are now treated without warnings when possible - as in case 135274 and case 135291 and case 135290.

135493: AtomikosDataSourceBean - log warning only if maxPoolSize equals default size

We now log a warning only if the maxPoolSize equals the default (rather than the minPoolSize).

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.18

135274: XAResourceTransaction.commit(): refine warnings on error

Avoid useless log warnings and stack traces if there are errors on commit that are not anomalies in the transaction outcome.

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.17

135247: 1-phase commit: treat XAER_NOTA as RollbackException

During 1-phase commit, some JMS brokers (ActiveMQ and other?) sometimes fail to recognise the Xid being committed. Instead of raising a needless heuristic (hazard) exception, this is now treated as internal timeout/rollback in the resource, and merely yields a RollbackException instead.

This is important when used with Spring's message listener containers because Spring will attempt to commit if there is no message on the queue, leading to a 1-phase commit where this can happen.

135035: Extend XAResourceTransaction.toString() to show extra details

To improve the interpretation of the output of our LogUtil, it helps if extra details are shown - so the toString() method now returns output like this:

XAResourceTransaction: 7075626C697368657230303030313030303031:7075626C69736865723131 [IN_DOUBT in resource amq1]

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.16

133294: Allow java.lang.Object methods after JDBC/JMS connection is closed

It is now possible to call Object methods on connections after they were closed.

133321: Add logfile inspection tool so one can find inflight transactions after JVM shutdown

By running com.atomikos.logutil.LogUtil (in module transactions-logutil) you can find any active transactions from a given logfile. Use the command java -jar transactions-logutil-3.9.16.jar to launch…

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.15

128766: Add Spring module to enforce proper init and close order among beans

We now offer the AtomikosApplicationContextAware class in package com.atomikos.spring to automate the init and close ordering of your Atomikos Spring beans. It automates the correct init and shutdown ordering of your Atomikos beans, freeing you from the need to specify explicit and brittle depends-on bean dependencies, as well as init and destroy methods. To use this feature, simply add an instance of com.atomikos.spring.AtomikosApplicationContextAware to your Spring config…

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.14

130852: UniqueIdMgr: java.lang.RuntimeException: Already writing a new version

Fixed cleanup of resources when writing a new epoch file, to avoid exceptions under abnormal operating conditions.

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.13

127485: READONLY does not call Synchronization - leading to connection leak with JDBC/JPA/XA Transactions

If two or more databases are involved, and all DBMS transactions are readonly, then the connections are not returned to the pool because Synchronization callbacks are not done properly. This has been fixed.

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.12

126795: NullPointerException during borrowConnection in JMS with concurrent close of existing session

Fixed a NPE condition where concurrent borrow requests and close operations on existing sessions would interfere.

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.11

122464: Tomcat demo app fails to find transactions-tomcat jar in our maven repo

Fixed the Tomcat demo so it works out-of-the-box.

122465: Re-enable documentation module as part of the build

The documentation was disabled in the last few releases because of build issues - this has now been fixed.

123612: Tomcat demo makes release plugin fail

We previously excluded the new Tomcat demo because it made the release process fail. This is now fixed.

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.10

123502: Deadlock on multi-threaded JMS connection use

Fixed a deadlock condition when multiple threads use the same JMS connection, each in its own session.

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.9

These are the release notes for ExtremeTransactions 3.9.9.

123312: Unexpected XAException errorCode during 1PC commit: avoid retrying commit

Exceptions during 1-phase commit used to generate useless retries and heuristic transaction outcomes. Since there is nothing that can be traced or retried anyway, we now ignore and log such cases.

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.8

These are the release notes for ExtremeTransactions 3.9.8.

123322: Avoid logging overhead for (root) transactions with only one participant

Transactions with only 1 participant (or resource) will resort to 1-phase commit and there is no way to recover their state. Therefore, logging adds useless overhead and is now avoided.

123291: Unexpected XAException errorCode during 2PC commit: call recover() to find out if retry makes sense

We now try to avoid unnecessary and annoying HeuristicHazard outcomes and dito retries, by doing extra checks in the XAResource backend whenever possible.

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.7

This is the release notes for ExtremeTransactions 3.9.7.

119171: Built-in Tomcat Integration

We now support built-in tomcat integration as follows:

  • A built-in lifecycle listener to start and stop the transaction manager at the right times
  • Global JNDI resource lookup of Atomikos JDBC and JMS resources
  • Optimal startup dependencies for maximised success of recovery
  • JMX beans for Tomcat
  • Compatibility with Tomcat's thread reuse

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.6

These are the release notes for ExtremeTransactions 3.9.6

118604: Improve class loading with "custom" class loader as first option for OSGi and JMX environments

Tuned class loading to fix warnings related to case 116504 (JMX + OSGi compatibility)

121913: Enable CSV formatted strings to populate property

Tomcat integration is facilitated by allowing multiple property values to be set as a CSV list in a String expression.

120548: Disable JMX license checks to allow easy installation of Tomcat integration

License checks are now disabled - this commercial value-added module is only available to paying subscribers and no longer for evaluation.

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.5

These are the release notes for ExtremeTransactions 3.9.5

118228: printStackTrace in ClassLoadingHelper

Fixed a minor bug where a stack trace would be displayed during class loading attempts:

java.lang.ClassNotFoundException: org.slf4j.impl.StaticLoggerBinder not found by com.atomikos.transactions-osgi [129]
    at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1460)
    at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)
    at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:190)
    at com.atomikos.util.ClassLoadingHelper.loadClass(ClassLoadingHelper.java:123)
    at com.atomikos.logging.LoggerFactory.<clinit>(LoggerFactory.java:25)
    at com.atomikos.transactions.internal.AtomikosActivator.<clinit>(AtomikosActivator.java:47)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at java.lang.Class.newInstance(Class.java:374)
    at org.apache.felix.framework.Felix.createBundleActivator(Felix.java:4177)
    at org.apache.felix.framework.Felix.activateBundle(Felix.java:1972)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:1895)
    at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:944)
    at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:931)
    at org.apache.karaf.features.internal.FeaturesServiceImpl.installFeatures(FeaturesServiceImpl.java:479)
    at org.apache.karaf.features.internal.FeaturesServiceImpl$2.run(FeaturesServiceImpl.java:1150)
No org.slf4j.impl.StaticLoggerBinder found in ClassPath, trying with log4j...

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.4

This is the first stable customer release on the 3.9.x branch, containing ports of the following fixes from earlier releases.

Available to customers only. Want to become a customer?

Send me a quote

87749: Support short properties in JDBC and JMS connectors

We've improved support for short properties that need to be converted from a text/XML configuration file.

75549: Optimize JTA performance

The UserTransactionManager class has a class-level synchronized block used for init purposes. We've added extra checks so this block is only executed if really needed. This optimizes performance by limiting the number of cases where threads will block each other.

68724: Memory leak in the JDK's ObjectOutputStream

We've added a reset of the underlying ObjectOutputStream for serialized logging, to avoid high memory consumption when the JDK keeps pointers to all previously serialized objects since the last checkpoint.

102827: Errors on close/delist lead to connection pool exhaustion

Fixed a critical bug where errors on delist would cause connection pool exhaustion.

84851: Avoid logging overhead and warnings for empty transactions

Empty, committing transactions would needlessly generate logging overhead and also generate needless heuristic warnings upon recovery. This has now been fixed. For the original report, see this forum post.

107901: Avoid heuristic hazard state for recovered 1PC committing transactions

Committing 1PC transactions would be converted to heuristic hazard cases upon recovery, which is in fact incorrect because these will then undergo 2PC commit retry. This has now been fixed: committing 1PC transactions are now simply forgotten upon recovery.

99070: NPE in SessionHandleState at line 301

Improved synchronization to avoid race conditions while checking whether or not a connection is taking part in a transaction. Also see this report in the forums.

92227: Mockito must not be a transitive dependency

Fixed polluting Mockito dependency in the poms.

107634: Fix zip file for ExtremeTransactionsForMaven: remove top 2 directory folders

Removed top-level folders that make unzipping to artifactory impractical.

91931: Small correction to improve log output in connection pool

Improved logging during init of the connection pool.

105547: Timeout of active transaction generating too much log content

We now avoid generating too much log content for timeouts.

72744: Does max_actives also take recovered coordinators into account?

Fixed a condition where recovery could lead to out-of-memory errors.

84252: Hide warning on forceCloseAllPendingStatements

The logging noise in JDBC has been reduced significantly.

84253: Log warning in !XAResourceTransaction if errors on prepare

Added warning to the log if prepare yields errors.

86779: Add optional property to NOT set timeout on XAResource so Oracle errors are avoided on recovery

The new 'propagateJtaTimeoutToXaResource' configuration property for JDBC and JMS now allows you to disable timeouts propagate via XA. For some vendor's XAResoure implementations this timeout seems to give problems and this property can serve as a workaround.

81146: Support vendor-specific flags on XAResource

Vendor-specific flags for starting a new XA branch as well as joining/suspending/resuming/ending an existing branch are now supported on the JDBC and JMS connector classes.

102830: Avoid logging user names and passwords in plain text

The new property 'xaPropertyNamesToHide' allows you to specify what vendor-specific XA properties should be hidden in the log entries. Typically, this would be used for sensitive information like passwords.

89815: 3.8 release: avoid Class.forName in logging for OSGi compatibility

Improved handling of class loading to be consistent in OSGi with the rest of the code base.

91579: Cannot instantiate JmxTransactionService in OSGi

Fixed JMX to work in OSGi too.

84253: Log warning in XAResourceTransaction if errors on prepare

Added warning to the log if prepare yields errors.

91719: UserTransactionFactory (JNDI): return UserTransactionManager rather than UserTransaction

This should make out-of-the-box integration with Tomcat and Spring easier.

96003: Bug in JmsSenderTemplate: for unanticipated exceptions during send, connections are not returned to pool?

Improved the way that unexpected errors are dealt with: the connections should be closed in those cases also.

86014: This UserTransactionManager instance was closed already

Improved behavior after close: only begin() now throws an exception. The other JTA methods are allowed to proceed with the intention of maximizing the chance of clean shutdown.

89030: Deadlock in JMS connection pooling mechanism

Removed synchronization issues among concurrent threads that could cause a deadlock.

93853: SingleThreadedJmsSenderTemplate does not recover from session error?

This should now also be fixed.

95466: Deadlock in transactions-messaging

Fixed a deadlock situation during shutdown.

80653: Enlisting two XAResources via JTA API fails for same backend

Checking for enlisted XAResources has been relaxed to allow more use cases than before.

95823: XAResourceTransaction.refreshConnection fails after recovery

Fixed a bug where hazard XA branches could not terminate due to connectivity failures after restart.

95886: CoordinatorImp.recover() returns false in the wrong cases

Improved the way recovery diagnoses itself - to avoid unnecessary log warnings.

85463: Bug in checkpointing: the last image flushed is not taken into account

This has been fixed.

84252: Hide warning on forceCloseAllPendingStatements

The logging noise in JDBC has been reduced significantly.

84253: Log warning in XAResourceTransaction if errors on prepare

Added warning to the log if prepare yields errors.

80464: Error on shutdown of MessageDrivenContainer

Improved shutdown procedure to wait for any listener threads to exit first. This should avoid ugly shutdown warnings and improve overall shutdown.

83599: MessageDrivenContainer: add receiveTimeout property

It is now possible to specify an (optional) extra receiveTimeout property - which will speed up shutdown because blocked receiver threads will exit sooner if a value is specified lower than the transaction timeout.

72990: Exception on timeout of coordinator

Corrected NullPointerException bug on recovery of certain transaction states.

73406: WG: Atomikos crashes VM when connection to MQSeries server breaks

Added workaround for MQSeries memory leak when connectivity to the broker goes down.

73193: Log warning if pool shuts down with connections in use

We now log a warning if a connection pool is shutdown while some connections are still being used.

73729: Connection recycling bug in JMS

Fixed a bug where two subsequent getConnection() requests (by the same thread) would get the same connection from the same AtomikosConnectionFactoryBean - leading to problems with the later close logic.

73756: Bug in MessageConsumerSession

Improved the retry/refresh logic when the JMS backed is unreachable.

72518: Bug in AbstractJmsSenderTemplate if destionationName set

When using the sendXXX utility methods of the sender template, one would get exceptions if only the destinationName (not the destination itself) had been set. This has now been fixed.

71264: Delay close of JMS vendor session until pending transaction is done

Fixed a bug where closing a JMS session would also close the underlying vendor session, leading to problematic rollback/commit.

71400: CoodinatorImp: improve logging

Improved logging of non-recoverable coordinators to help diagnose problems.

71748: Timer thread causes threading errors on MQSeries JMS

From now on, setting com.atomikos.icatch.threaded_2pc=false will also change the way the timeout mechanism behaves: active transactions will no longer be rolled back by the timeout thread, but rather set to rollbackOnly instead. Other transaction states are not affected.

85290: Missing folders in 3.7.0 release

Corrected the documentation: removed obsolete references to folders that no longer exist in the 3.7 release.

85291: START_HERE refers to wrong team page

Corrected the link to the Atomikos team page in the release documentation.

85796: NPE when JMS server not reachable (using SingleThreadedJmsSenderTemplate)

This bug has now been fixed.

86040: Port fix for 80464

Ported fix for case 80464 - error on shutdown of MessageDrivenContainer.

86041: Port fix for 83599

Ported fix for case 83599: MessageDrivenContainer - add receiveTimeout property.

86090: TransactionsEssentials guide still refers to old OraXidFactory

Removed obsolete reference to OraXidFactory in the docs.

74730: RMI examples missing in 3.7.0 release

Added the RMI examples - missing in the 3.7.0 release.

Available to customers only. Want to become a customer?

Send me a quote

ExtremeTransactions 3.9.3

These are the release notes for ExtremeTransactions 3.9.3

Improved OSGi support for write-ahead logging

The transactions-writeahead logging module is now a fragment bundle for OSGi - it can be added to the bundles of your OSGi runtime. If present, it will be picked up automatically for the logging.

Added positive log message when valid license found

When a valid license is found, this is now shown in the logs as INFO message.

Added JMX examples

An example that demonstrate the new JMX feature has been added. Capture decran 2014-02-07 a 18.19.17.png

115835: Bug in JmxTransactionManagerBean: logControl not initialized

Resolved an issue where in some cases the JmxTransactionManagerBean might not be initialized properly.

105547: Timeout of active transaction generating too much log content

We now avoid generating too much log content for timeouts.

ExtremeTransactions 3.9.2

These are the release notes for ExtremeTransactions 3.9.2

Fixed examples upload to website

For release 3.9.1, the examples could not be uploaded to the website. This should now have been fixed.

Improved OSGi compatibility of new modules

Some newer modules (atomikos-licensing and transactions-jmx) were not yet enabled for OSGi; this is fixed and illustrated with new OSGi examples.

OSGi demos have been restricted to ExtremeTransactions evaluators

Due to changes for compatibility with our new commercial functionality, the OSGi demos are no longer part of the open source demos.

Added system property to specify license file folder location

We've improved the way license files are looked up, by means of the system property com.atomikos.icatch.license_folder: if set, then the license manager will attempt to load the license file from this location rather than from the classpath.

OSGi documentation

We've added some documentation related to OSGi integration here.

ExtremeTransactions 3.9.1

These are the release notes for ExtremeTransactions 3.9.1

112646: enable backward compatibility of sessionTransacted behavior

Legacy applications/configurations that expect the 'old' behavior of our JMS sessions (determined by the sessionTransacted flag passed upon session creation) can now re-enable this behavior by setting the ignoreSessionTransactedFlag on the Atomikos connection factory to false.

112579: com.atomikos.icatch.enable_logging is ignored

This setting got ignored in the 3.9 release, meaning there was no way to turn logging off - this has now been fixed.

112651: old release notes html file in evaluation download

The evaluation download contained old release notes - these have been removed. Release notes are now online only.

112681: transactions-jmx module missing in evaluation download

The new transactions-jmx was missing in the zip file for the evaluation download.

ExtremeTransactions 3.9.0

These are the release notes for ExtremeTransactions 3.9.0

Registering TSListener instances via the JDK ServiceLoader

You can now also register listener instances via the JDK ServiceLoader mechanism.

Removed JTA dependency from API

A JTA-specific import (on heuristic exceptions) existed in our Participant interface - this is now removed.

JMS: sessions no longer need to be created with the sessionTransacted flag set

Unless the AtomikosConnectionFactoryBean is set to use localTransactionMode, we now always create XA-capable sessions. This facilitates compatibility with third-party platforms like Spring.

Improved JMX support for transactions [Customers Only]

A new transaction MBean now supports easier viewing of active transactions, as well as important transaction statistics and counters (like percent committed, percent aborted and so on).

Added 'domain events' related to transaction and connection pool lifecycle

It is now possible for internal or external modules (using transactions-api) to register for important life cycle events involving transaction and connection pool states, like transaction creation, commit, rollback or heuristic outcomes. See the com.atomikos.icatch.event package and its interaction with the ServiceLoader mechanism in Java.

Changed license mechanism

The licensing framework has been refactored to use signed public/private key technology. A new license consists of 2 files: a property file and a signature file, both of which need to be added to the class path of your application (or, alternatively, put in some folder whose location is specified as system property 'com.atomikos.license_folder'). Also, the default 30 minute evaluation license has been removed from ExtremeTransactions.

JMX support for JDBC and JMS [Customers Only]

Added/improved JMX support for JDBC and JMS in ExtremeTransactions.

87749: Support short properties in JDBC and JMS connectors

We've improved support for short properties that need to be converted from a text/XML configuration file.

110695: DataSource getParentLogger should return java.util.logging.Logger

Fixed return type of the getParentLogger method.

102827: Errors on close/delist lead to connection pool exhaustion

Fixed a critical bug where errors on delist would cause connection pool exhaustion.

106527: Add JMX-enabling methods to JMS ConnectionFactory

See this forum post for details: JMX utility methods have been added to our ConnectionFactory.

84851: Avoid logging overhead and warnings for empty transactions

Empty, committing transactions would needlessly generate logging overhead and also generate needless heuristic warnings upon recovery. This has now been fixed. For the original report, see this forum post.

88107: Migrate documentation to specification repository

The PDF guides are now downloadable as separate artifacts. This keeps the product release small and compliant with your maven repository, and shortens the build time for bug fixes.

61915: ResourceTransaction and XAResourceTransaction: refactor

Refactored these important classes - the code needed some cleaning...

88151: JDBC calls to create a Statement: show what the SQL arguments are

JDBC statements are now logged with the SQL arguments.

88711: Remove examples from product build - to be included in separate specifications build/download

The examples are now shipped as separate artifacts so the  product distribution is minimal and maven-compliant for easy deployment to your repository, and shortens the build time for bug fixes.

83905: Resuming a transaction should also resume its XAResources

When a JTA transaction is resumed by its thread, it will also trigger resume at the XA level for all enlisted XAResource instances.

104940: Add pool property: maxLifetime

Avoid the overhead of a testQuery by setting maxLifetime: this new property removes from the pool any connection that stays around longer than this limit. This closes your connections before any configuration-specific timeouts do, and mostly deprecates the need for a testQuery. This, in turn, improves performance of the pool because borrowing a connection no longer implies a roundtrip to the database (inside a synchronized block!).

85464: Avoid that Synchronization instances force full 2PC

When you register Synchronization instances then this will no longer imply / force 2-phase commit. This increases performance for use cases with only one XAResource, where the 1-phase commit optimization can now  product its maximum efficiency.

87865: Port examples to maven

The examples are now built and run with maven.

101331: Drop transactions-jms-deprecated

The transactions-jms-deprecated module/jar has been dropped.

101332: Drop transactions-jdbc-deprecated

The transactions-jdbc-deprecated module/jar has been dropped.

85106: Make transaction object return the status of preparing or commit

Improved the way getStatus() works.

68727: Chaining for the icatch RollbackException

Improved exception chaining so root causes are more visible.

75013: SiblingMapper only remembers the last XAResourceTransaction - so in some cases it cannot use TMJOIN when needed

Improved TMJOIN behavior so this feature can now be fully exploited at the XAResource level.

105851: DataSerializable as alternative StateRecoveryManager implementation so the transaction logs are readable by humans

A new, alternative logging implementation is available. It avoids object serialization and can be activated by setting the init property com.atomikos.icatch.serializable_logging to false.

105852: Add write-ahead logging to batch multiple sync calls for performance

The commercial edition now contains a new module write-ahead logging for increased performance.

95287: Keep errors from Synchronizations and use them for the cause of the RollbackException

Another improvement of the way root causes are handled.

32936: Improve synchronization callback for READ-ONLY optimization

The afterCompletion method of synchronization instances no longer gets "UNKNOWN" for read-only transactions.

59546: Drop JDK 1.5/JDBC 3 in favor of the JDK 1.6/JDBC4 API

We no longer support Java 5 since it is deprecated anyway.

Corporate Information

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

Contact Us

Copyright 2026 Atomikos BVBA | Our Privacy Policy
By using this site you agree to our cookies. More info. That's Fine