# Atomikos ExtremeTransactions Release Notes

This is ExtremeTransactions®, the Atomikos® flagship product with next-generation transaction management capabilities.

# Release Notes for ExtremeTransactions 3.8.0M1

## 83620: OSGi woes with ATE 3.7.0

Improved exports in our OSGi bundle - for improved OSGi comfort.

## 70899: Implement logging API

As of this release, we no longer use our tm.out for logging. Instead, we now use your application's logging mechanism/framework by configuring a logger for com.atomikos or nested packages.

## 61595: Document: poolSize overrides minPoolSize and maxPoolSize

Improved poolSize javadoc.

## 69383: Example app for OSGi

The examples for ExtremeTransactions now contain a working OSGi example.

# Release Notes for ExtremeTransactions 3.7.1

## 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.

# Release Notes for ExtremeTransactions 3.7.0

## 73086: Add checks for max length of uniqueResourceName and tm_unique_name

Improved checks for max length of the different names that form the Xid together.

## 73137: Disable threaded commits by default

Threaded commits are now disabled by default, since they cause too many issues with JDBC and JMS connectors.

## 33795: Decrease logging overhead

Optimized logging overhead for performance.

## 69638: IncomprehensibleException: java.lang.IllegalStateException: wrong state: ABORTING

Improved logging when this happens.

## 71079: MQ7 rollback problem: resource unavailable after the JMS session was closed

Fixed a bug where the XASession of the underlying JMS connector was closed too early.

## 71183: Fix HTML docs: javadoc not included in open source release

Added working javadoc references for the open source release.

## 72276: ActiveMQ durable topic subscriber issue

Fixed clientID issues with ActiveMQ (and other durable subscriber scenarios).

## 72277: Update getting started: 1.5 JDK required

Updated docs to reflect JDK 1.5 requirement.

## 72398: Log as INFO: "refreshed XAResource"

We now log this as INFO, not WARN - to avoid log pollution.

## 73007: Disallow reusing Statement after commit

Reusing JDBC Statement objects after commit leads to an undefined transaction context for the SQL that follows. This is a bug; for now it has been fixed by disallowing reuse across transaction boundaries, but if this turns out to be problematic then we will do something more sophisticated.

# Release Notes for ExtremeTransactions 3.7.0M5

## 68913: Missing jta.properties file in TransactionsEssentials distro

Added missing jta.properties file.

## 69398: Package com.atomikos.icatch.system is missing in sources for distro

Added missing sources in TransactionsEssentials distribution.

## 69539: INFO logging written as DEBUG

Fixed a bug where INFO level comments were logged as DEBUG instead.

## 69587: OSGi jars missing in distro - recompile fails

Fixed recompilation problem in the TransactionsEssentials distribution.

## 69588: Build file in distro refers to missing test folder

Fixed obsolete reference to missing test folder in recompilation of the TransactionsEssentials distribution.

# Release Notes for ExtremeTransactions 3.7.0M4

## 68723: 3.7.0M3 still missing source

TransactionsEssentials now includes the missing source code.

# Release Notes for ExtremeTransactions 3.7.0.M3

## 68213: Non-JTA use of JMS: log as INFO, not WARNING

You can now use our JMS connections without getting warnings whenever you disable JTA usage.

## 68437: Optimize dynamic proxy generation for performance

Changed proxy generation back to the 'old', pre-OSGi way due to performance problems. JDBC and JMS resources now have to be supplied as extension bundles to our transactions-osgi jar.

## 68472: Fix EOL characters for the .sh scripts in the demos

Fixed the demo scripts to work on UNIX systems.

## 68476: Check javadoc generation during release

The javadoc is now included in the ExtremeTransactions release (but not for TransactionsEssentials).

## 68479: Aggregated jar is missing

The transactions-essentials.jar has been replaced with the transactions-osgi.jar, and the latter is also our main OSGi bundle.

## 68533: Log warning if min/maxPoolSize not set?

We now log a warning message if the min/maxPoolSize is set to the default value (1) - in order to avoid performance problems.

## 68723: 3.7.0M2 missing source

TransactionsEssentials now includes the missing source code.

# Release Notes for TransactionsEssentials 3.7.0.M2

The following fixes have been merged from the 3.5.14 release:

## 66922: JDBC testQuery: log warning if not set

We now log a clear warning message if the testQuery is not set. Setting it is highly recommended; a default value is unrealistic because of SQL dialects.

## 22198: Connection testing failure generates bad exception message

Improved the diagnostic message when this happens.

## 66052: Make TransactionManager implement UserTransaction for easier Tomcat JNDI config

All our TransactionManager implementation classes now also implement UserTransaction - this should make JNDI integration easier because we can now expose the TransactionManager instance under the UserTransaction lookup name.

## 66587: Excessive Memory Allocation and Performance Cost - StringBuffer.append()

Optimized logging for performance: we now only really construct the expensive DEBUG and INFO Strings when needed, i.e. if the log level is appropriate - cf http://fogbugz.atomikos.com/default.asp?community.6.1661.2#discussTopic1677

## 58830: Allow non-query SQL strings in testQuery

We now also allow non-query SQL statements in the testQuery property - cf http://fogbugz.atomikos.com/default.asp?community.6.1117.3#discussTopic1124

## 62889: JmxTransactionService - deregister MBeans on Shutdown

We now also deregister all MBeans created by the JmxTransactionService - cf http://fogbugz.atomikos.com/default.asp?community.6.1430.0

## 64546: NullPointerException on recovery

Improved logging of commit decisions to avoid NullPointerException instances on recovery - cf http://fogbugz.atomikos.com/default.asp?community.6.1530.0

## 67457: Improve handling of InterruptedException

We now handle InterruptedException instances according to the book - cf http://www.javaspecialists.co.za/archive/Issue056.html and http://fogbugz.atomikos.com/default.asp?community.6.1698.5#discussTopic1718

## 67951: NullPointerException in XAResourceTransaction when resource is not found on recovery

Improved dealing with unresolved resources during recovery; i.e., when a resource is not found because it has been removed between shutdown and restart - cf http://fogbugz.atomikos.com/default.asp?community.6.1755.1

## 68004: Improve exception chaining for javax.transaction Exception classes

We now include the underlying cause exceptions.

# Release Notes for ExtremeTransactions 3.7 RC1

This release features WS-AT support for JAX-WS as the main focus. Details are below:

## 20005: Include WS-AT modules

WS-AT support (in the past available as JAX-RPC) has now been included for JAX-WS technology.

## 57937: Add support for HTTPS

HTTPS is now supported for the two-phase commit SOAP ports, provided that the underlying SOAP stack supports it. To enable this feature, set the startup property com.atomikos.icatch.https to true.

## 31997: Create simple demo app

A simple demo app is included for WS-AT over JAX-WS.

# Release Notes for ExtremeTransactions 3.6.5

## 57723: Include changes of TransactionsEssentials 3.5.9

Included version 3.5.9 of the core libraries.

# Release Notes for ExtremeTransactions 3.6.4

## 32798: Include TransactionsEssentials 3.5.8

Included changes of TransactionsEssentials 3.5.8

## 33445: .sh files are not executable -> change the zip ant task to do that

Fixed the UNIX demo shell scripts to be executable out-of-the-box.

## 33446: Change the demo README files to mention the license

Clarified license requirements in the JAX-WS demo README file.

## 33447: Clarify exception on expired license (not clear it seems)

Clarified exception message on expired license.

# Release Notes for ExtremeTransactions 3.6.3

## 31575: Upgrade to TransactionsEssentials 3.5.5

The latest TransactionsEssentials 3.5.5 release is now included, with some important fixes in there. See the TransactionsEssentials release notes for details.

# Release Notes for ExtremeTransactions 3.6.2

## 30004: Improve JAX-WS handler config on server-side

The JAX-WS demo showed an XML-based handler config mechanism that did not support init preferences for the handler. This has now been fixed by including a programmatic configuration mechanism.

## 30108: Update documentation to new handler config

The documentation now mentions the new handler configuration mechanism instead of the old one.

# Release Notes for ExtremeTransactions 3.6.1

## 29311: Demo for JAXWS

Added demo for JAXWS transactions; see examples/jaxws.

## 29313: Add documentation for web services

Added more documentation for web services.

## 29592: Remove obsolete module: transactions-jetty5

Removed some obsolete legacy modules (jars).

## 29596: Implement unexportEndpoints

Added unexport of the SOAP endpoints during shutdown.

## 29905: Include TransactionsEssentials 3.5.4

Upgraded to 3.5.4 of TransactionsEssentials.

## 30005: activeRecovery init parameter is obsolete for handlers

Its value is now inferred by the other handler settings.

## 30013: Change URI scheme to atomikos://

The URIs created for transaction IDs are now prefixed with atomikos://

# Release Notes for ExtremeTransactions-3.6

## 28661: Change URI format

The URIs for transactions are now of the form fake:// because they are not really accessible in a REST-style (via http).

## 29510: Add JAXWS support

We now support transactions that span multiple JAXWS (SOAP) services.

# Release Notes for ExtremeTransactions 3.5.1

## 27885: QueueConnectionFactoryBeanBeanInfo inconsistent: xidFactory

The xidFactory attribute had been removed from the bean class but not from the bean descriptor; this is now fixed.

## 28665: Shrinking pool: should check whether connection is being used or not

The connection pool would not always check if a connection was in use before destroying it. Under high loads this would lead to problems, and this bug has now been fixed.

## 28678: ConnectionPool borrowConnection: exception causes destroy of last pooled connection!

An error while checking for available connections would lead to the improper destroy of the last connection in the pool - this has now been fixed.

## 28623: jms connection pooling bug

Fixed a threading issue reported in the forums: http://fogbugz.atomikos.com/default.asp?community.6.506.0

## 28843: Connection in use after timeout in nonxa JDBC

In some cases (notably a transaction timeout in between borrowing and first using a connection) the connection state would get corrupted, leading to subsequent messages like: "Connection accessed by transaction ... is already in use in another transaction:... Non-XA connections are not compatible with nested transaction use." This has been fixed.

## 28388: Resource already registered using JMS

Fixed a bug in the JMS JNDI mechanism - for details see this forum post: http://fogbugz.atomikos.com/default.asp?community.6.460.1

## 28680: Refactor borrowConnection in pool

Improved the logic for borrowing a connection.

## 29060: NPE when checking pool connections under high load

Fixed a bug where race conditions could lead to NullPointerExceptions in checking a non-xa connection's reusability.

# Release Notes for ExtremeTransactions 3.5

## 26833: Refactor startup properties (moved out of TSInitInfo)

The startup properties are no longer in the API but are now in the implementation-specific UserTransactionServiceFactory classes.

## 23398: CommitServer: reuse core thread pooling?

Commits are now done with the more recent core thread pooling mechanism. This deprecates the init parameter 'com.atomikos.icatch.soap_request_threads'.

## 27524: Update javac in build.xml: add source="1.4"

We now again allow Java 1.4 to be used at runtime.

## 27857: Transaction timeout in JDBC results in autoCommit mode

Fixed a bug in the connection state handling: timeout and rollback could result in a JDBC connection with autoCommit on.

## 27885: QueueConnectionFactoryBeanBeanInfo inconsistent: xidFactory

The xidFactory attribute had been removed from the bean class but not from the bean descriptor; this is now fixed.

## 27920: Default timeout property wrong name

The property name in the sample jta.properties file was wrong - this has been corrected.

## 27793: Non-xa proxy: useCount incremented twice when reusing exisiting proxy

When the same thread called getConnection() twice then there was a reuse bug as reported here: http://fogbugz.atomikos.com/default.asp?community.6.411.0

## 27614: Deadlock in JMS during onTerminated callback of PooledJMSConnection

Fixed a deadlock case between the connection pool and the JMS pooled connection, due to a synchronized observer callback.

## 21459: Maven POM support

We now offer a maven POM structure as a separate download.

## 21576: XAResourceTransaction: improve heuristic message

Improved (clarified) heuristic log comments for XA branches.

## 21689: Improve recovery problem across XA drivers

Improved recovery when the JDBC/XA drivers are upgraded between shutdown and restart.

## 26426: Add option to unsubscribe on close of topic receiver

The MessageDrivenContainer now supports unsubscribe on close - meaning that closing the container will also unsubscribe for any durable subscriptions (if this option is set).

## 21574: JmxLogAdministrator: option to show only heuristics

The JmxLogAdministrator can now be configured to show only heuristic transactions (i.e., the real problem cases) instead of all active transactions.

## 23486: Move startup properties out of TSInitInfo and into AbstractUserTransactionServiceFactory

Refactored the TSInitInfo interface to move out implementation-specific startup properties. These are now in the factory class(es) for the UserTransactionService corresponding to the implementation.

## 23693: Optimize roots: don't log prepared state

We have optimized logging even more for root transactions: prepared states do not generate any logging overhead any more. This cuts down logging costs by 30% or more.

## 21350: Add support for destinationName in JMS utilities

The JMS utility classes (in package com.atomikos.jms.extra) now support setting the (provider-specific) destinationName; this facilitates Spring (or other) configuration because you no longer need to obtain a reference to a Destination object first...

## 26045: Make build work for Java 5

The build now works for Java 5 also. Previously, the build could only be done on JDK 1.4

## 26911: Improved handling of heuristic hazard problems

Heuristic (hazard) exception states are now managed even better - this includes improved retry handling and better resolution after recovery.

## 26976: Deadlocks

Fixed a deadlock in the JMS pools.

## 24071: Simplify nonxa with new connection recycling

Simplified the thread-specific reuse of non-xa JDBC connections, by exploiting the newer 'connection recycling' that is now built-in into the pools.

## 24109: Heuristic messages: improve clarity

Heuristic log comments were improved for extra clarity.

## 24579: Support commit ordering

If single-threaded two-phase commit is enabled (in the jta.properties
file) then commits are now executed in the same order as the resources were
accessed by the transaction.

## 26240: Create Hibernate ConnectionProvider

We have added a Hibernate ConnectionProvider implementation to facilitate Hibernate 3.3+ configuration of the DataSource.

## 26398: Allow resume of transaction with status MARKED_ROLLBACK

It is now possible to resume a transaction after it was marked as rollbackOnly.

## 25809: Refactor MessageDrivenContainer to allow hot property change detection

The MessageDrivenContainer now allows (re)setting most of its properties after initialization.

# Release Notes for ExtremeTransactions 3.4

## 21623: Include changes of 3.4 release of TransactionsEssentials

Included changes of TransactionsEssentials up to release 3.4.4

## 26712: License utility for ExtremeTransactions

Added license enforcement via license files

## 22444: Improve class loading

Improved class loading strategies to be more compliant with J2EE

## 24217: Remove lock file check (use new channel lock like in TransactionsEssentials)

There is no longer a need to create cumbersome .lck files upon startup

## 27365: Update documentation to explain new JMS

The documentation now mentions the new JMS capabilities

# New as from Release 3.3.0

## 21737: Integrate Slf4jConsole

Integrated support for Log4J integration via SLF4J.

## 21799: Trmi UserTransactionServiceImp: add default value for REGISTER_SHUTDOWN_HOOK_PROPERTY_NAME

Added support for enabling/disabling shutdown behavior on VM exit, via a startup property.

## 21310: Change epoch directory to log directory

The epoch file now goes into the log directory instead of the output directory.

## 21311: Add and document threaded 2PC property

Added support for single-threaded commit via a startup property.

## 23397: Remove JAX-RPC examples

Removed JAX-RPC support (to be replaced by JAX-WS in the next release).

## 23442: UserTransactionServiceImp: version and product name are wrong

Corrected version and product metadata.

## 23329: Add high-resolution logo to docs

Improved resolution of logos in the PDFs.

## 21632: Update manuals for ExtremeTransactions

Updated manuals for ExtremeTransactions.

## 23319: Remove obsolete modules

Removed deprecated application server integration modules such as JBoss, Tomcat and more.

## 23325: Update to 3.3 of TransactionsEssentials

Included all changes of the TransactionsEssentials 3.3.1 core.

## Known Issues

The following are known issues for this release:

- The input line is too long: install ExtremeTransactions close enough to the root of your disk to avoid this...

Please also check the forums for more up-to-date information on known issues.

# New as from release 3.2.2

Bug fixes:

## 22436: RMI export/import: properties are not included?

RMI export/import: fixed a bug where properties were not included - leading to an independent root transaction on the importing side.

## 22437: RMI demos: don't work if rebuilt?

Fixed build.xml for j2se demos so that rebuild doesn't make the RMI demos crash.

## 22440: RMI demo fails: non-xa datasource incompatible with sibling transactions

Changed the RMI Client class to NOT call the portal twice in the same transaction.

## New as from Release 3.1.1

New features:

- 1015: JNDI support for Tomcat 5.5 in web control panel

Bug fixes:

- Fixed 10114: WST installation instructions are wrong
- Fixed 10090: JNDI errors in Tomcat 5.5.15
- Fixed 10089: JNDI errors in Tomcat 5.5.9

## New as from Release 3.1.0

Added features:

- 10096: Upgrade to 3.1 of TransactionEssentials

## Upgrade Guidelines For Users of Transactions 2.x

Users of the RMI/IIOP functionality in the Transactions 2.x editions should take the following changes into account. Due to refactoring, this product will not work as a drop-in replacement for the 2.x series.

### Configuration changes

The value of the startup property com.atomikos.icatch.rmi_export_class MUST be set in your startup properties, or RMI/IIOP transactions will not be available (this features was enabled before, but is now disabled by default to make the software easier to use in most of the practical scenarios). See the sample properties file included in the release for possible values of this property.

The properties file can now also be called 'transactions.properties' instead of just 'jta.properties'. Extra properties were added to support new features (see the sample properties file included in the release).

### Moved from package com.atomikos.icatch into package com.atomikos.icatch.config:

- TSMetaData
- UserTransactionService
- UserTransactionServiceFactory
- UserTransactionServiceImp
- TSInitInfo

### Moved from package com.atomikos.icatch into package com.atomikos.icatch.system:

- Configuration
- SubTxThread
- Waiter

### Other changes

- Added method getLevel to interface com.atomikos.diagnostics.Console
- Added method getSuperiorRecoveryCoordinator to interface com.atomikos.icatch.TransactionService
- Interface com.atomikos.icatch.Participant now has an extra method getURI
- Interfaces com.atomikos.icatch.CompositeTerminator and com.atomikos.icatch.TransactionControl are now deprecated; their methods have been merged into com.atomikos.icatch.CompositeTransaction
- Interface com.atomikos.icatch.Extent now maps string-based URIs to Integers
- Interface com.atomikos.icatch.RecoveryCoordinator has an extra method getURI
- Interface com.atomikos.icatch.ExportingTransactionManager now also throws RollbackException
- Fixed bug 10026: getTags of com.atomikos.icatch.CompositeCoordinator would sometimes return a null element in the array
- Fixed bug 10028: recovery before recovery service registers
- Fixed bug 10030: deadlock during recovery
- Fixed bug 10031: XATransactionResource already closed
- Fixed bug 10032: QueueConnectionFactoryBean not referenceable
- Fixed bug 10033: System.out.println in QueueConnectionFactoryBean
- Fixed bug 10034: JMS bridge commits on receive error
- Fixed bug 10035: Synchronization.afterCompletion gets COMMITTED
- Fixed bug 10036: shutdown(false) hangs if called during recovery
- Fixed bug 10037: Log file in 12 hr format but with no AM/PM tag

## Included from Release 2.1x

- JMS message-driven transaction support: transactional message listeners
- JMS message bridge transaction support: reliable, exactly-once transfer of JMS messages even across queue domains
- Spring support (J2EE without EJB)
- Additional samples for JMS and Spring
- Our JMS QueueConnectionFactory now also supports non-transacted sessions
- The console files now support rotation and size limitation
- Several minor bug fixes
- JMS workaround for non-standard IBM MQSeries XAResource behaviour
- Refactored logging for improved reliability
- Bug fix: corrected NullPointerException in QueueConnectionFactoryBean.
- Leading and trailing spaces in JNDI/RMI related properties are now also ignored.
- Bug fix: corrected a multi-threading problem (during enlistment/delistment of XAResource instances) that could happen if one Transaction was being used by several concurrent threads.