Welcome to Atomikos
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.