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.

Contact Us

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

T +3215613055

Subscribe to our newsletter

Never miss an update

Copyright 2020 Atomikos BVBA | Our Privacy Policy
This website is using cookies. More info. That's Fine