# Release Notes for TransactionsEssentials 3.7.2

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

## 85468: Merge-in latest changes from SVN

Merged-in the bug fixes from releases 3.6.9-3.6.11 and 3.5.15-3.5.18 (see below for details).

# The following fixes have been merged from releases 3.6.9-3.6.11

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

# The following fixes have been merged from releases 3.5.15-3.5.18

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

# Release Notes for TransactionsEssentials 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 TransactionsEssentials 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 TransactionsEssentials 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 TransactionsEssentials 3.7.0M4

## 68723: 3.7.0M3 still missing source

TransactionsEssentials now includes the missing source code.

# Release Notes for TransactionsEssentials 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 TransactionsEssentials 3.5.9

## 57352: Reaping should update lastTimeReleased

Reap functionality did not always update the connection state and this confused the pool.

## 57502: MessageConsumerSession.close should not check unsubscribeOnClose

Fixed a bug in closing the MessageConsumerSession (used by the MessageDrivenContainer) in order to improve connection/session cleanup upon closing.

## 57453: Bug in nonxa datasource: readOnly mode does not release connections to pool

Fixed a bug in readOnly mode to release connections in case of two-phase commit.

## 34513: Exception message refers to old forums

Removed reference to the old forums.

## 52817: Improve error message if epoch file cannot be read

We now also show the name of the file that has problems.

# Release Notes for TransactionsEssentials 3.5.8

## 33395: Epoch file empty after shutdown

Sometimes a crash would corrupt the epoch file - this has now been fixed.

## 30347: Change build files to upload in our maven repo structure

We now upload releases to our online maven repository.

## 33703: Deadlock in JMS

Fixed a deadlock occurring in non-JTA/XA use of our JMS.

## 33794: Logfile corrupted exception to catch

Improved exception handling in case of corrupted log files - see http://fogbugz.atomikos.com/default.asp?community.6.866.1

## 31037: Epoch file corrupted after crash

Added a sync call upon writing the epoch file.

## 33674: Invalid XAConnections are not removed from the pool

Fixed a bug in testing XAConnections - see http://fogbugz.atomikos.com/default.asp?community.6.853.0

## 33702: MessageConsumerSession: catch Throwable to better avoid thread exit?

Improved exception handling in the JMS listener thread.

# Release Notes for TransactionsEssentials 3.5.7

## 32251: Set transaction isolation level on DataSource

Corrected bug: when the selected default isolation level is not supported by the native JDBC driver then an exception should be thrown rather than just a log warning generated.

## 32800: Bug in connection pool reaping logic

The reap logic did not correctly take into account the acquisition time.

## 32801: Thread blocked on java.util.logging.ConsoleHandler

Improved performance by checking the SLF4J log level to avoid unnecessary synchronization issues.

# Release Notes for TransactionsEssentials 3.5.6

## 32251: Set transaction isolation level on DataSource

It is now possible to specify a default isolation level on the main datasource classes.

## 32252: Make AtomikosJTATransactionFactory compatible with Hibernate 3.2.6

Added a fix for correct configuring of the Hibernate properties. See this forum post for the report (thanks to Les Walker): http://fogbugz.atomikos.com/default.asp?community.6.779.0

# Release Notes for TransactionsEssentials 3.5.5

## 30394: Generate log warning if old JDBC/JMS connectors are used

When you configure the deprecated drivers, you will now get a warning in the console log file.

## 30897: Add product version to the logs during startup

The product version is now written into the console log file during startup.

## 30979: XAResourceTransaction: improve logging

We now write the information to the console file before doing the XA calls. This improves diagnostics in case of exceptions.

## 31037: Epoch file corrupted after crash

Added a sync call upon writing the epoch file.

## 31209: XAConnection not refreshed during commit

Bouncing the back-end did not recover XAConnections and consequently made pending commits go into heuristic hazard state when there was no real need to do so.

## 31275: Forced close of statement should also remove the statements

When statements were closed upon timeout/rollback, the closed statements were not removed from the list of past statements, causing many 'close' warnings in the logs. This has now been fixed.

## 30664: ConcurrentModificationException when forcing statements to close

Added synchronization to avoid concurrency effects.

## 30752: NonXADataSource connection interference

There was a bug in (re)setting the autoCommit mode of a non-xa connection, causing it to be set when a connection was already being reused under high loads. This in turn led to repeated heuristic commit errors for the reusing transaction. Both problems have now been fixed.

## 30199: Improve warnings and docs if sessionTransacted=false

Improved diagnostic warnings to clarify the consequence of using non-transacted sessions.

# Release Notes for TransactionsEssentials 3.5.4

## 29708: Statements reusable in autoCommit mode after transaction timeout

Statements that were opened inside a transaction would still be usable in autoCommit mode after the transaction timed out. This has been fixed by closing all remaining statements on timeout of the transaction.

## 29251: Resource already registered using JMS

Corrected a JMS initialization bug as suggested in the forums: http://fogbugz.atomikos.com/default.asp?community.6.460.3

# Release Notes for TransactionsEssentials 3.5.3

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

## 27885: QueueConnectionFactoryBeanBeanInfo inconsistent: xidFactory

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

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

## 28623: Jms connection pooling bug

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

## 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 TransactionsEssentials 3.5.2

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

# Release Notes for TransactionsEssentials 3.5.1

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

# Release Notes for TransactionsEssentials 3.5

## 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 TransactionsEssentials 3.4.4

## 26380: AtomikosDataSourceBean fails if DB down initially

Fixed pool start-up resilience to DBMS unavailability.

# Release Notes for TransactionsEssentials 3.4.3

## 26005: Closing connection factory does not close all connections

Now the JDBC and JMS connectors behave better when closed: they will also close the resources for recovery - meaning that all connections should be cleaned up.

# Release Notes for TransactionsEssentials 3.4.2

## 25671: Recovery interferes with active enlist/delist

Improved handling or recovery interleaved with active transaction processing.

## 25758: Improve class loading for OSGI

Added extra strategy for loading proxy classes and interfaces, as suggested by http://fogbugz.atomikos.com/default.asp?community.6.317.7

## 25678: JDBC Connection not refreshed on errors during enlist

Corrected a bug where enlist failures (such as lost connectivity to back-end) would cause recurring connection problems in the pool.

## 24532: AtomikosNonXADataSourceBean degraded performance

Optimized dynamic proxy handling to avoid JDK overhead.

# Release Notes for TransactionsEssentials 3.4.1

## 23722: NonXaDataSource: add readOnly feature

Instances of the datasource can now be marked as 'readOnly', in which case the exceptions upon recovery should go away.

## 24883: Spring JMS bank demo does not work (blocks on createConsumer for activeMQ)

Fixed blocking problem in the Spring/jms/ActiveMQ sample.

## 25010: java.util.ConcurrentModificationException

Fixed concurrency problem in JDBC.

## 25033: Timeout overflow problem

Fixed timeout overflow for large integers.

## 25131: JMS deprecated jars not included in download

Added inclusion of the 'deprecated' JMS jars in the download.

## 25222: Oracle AQ workaround for new JMS

Added Oracle JMS patch code.

## 25223: Memory leak in 3.4 JMS

Improved closing of sessions in the new JMS facilities.

# Release Notes for TransactionsEssentials 3.4

This release mainly focuses on improved JMS support with better JMS 1.1 compatibility and JMS connection pooling. Details are listed below...

## 24531: Bridge class missing

The Bridge classes in package com.atomikos.jms have been dropped - this functionality can easily be implemented in the application layer.

## 22186: Solve Hibernate 3.2.6 incompatibility (with Hibernate 3.3 additions)

Hibernate 3.3 and higher are now supported.

## 23976: xaProperties in JDBC/JMS: default to EMPTY properties, not null

The default value for the xaProperties in JMS and JDBC is now an empty set of properties.

## 23951: AtomikosDataSourceBean: add setXaDataSource(XADataSource xaDS)

It is now possible to configure the datasource with a pre-configured XADataSource instance.

## 23790: Improve error messages: centralize exception codes

Improved exception error codes/messages.

## 24683: patch for Oracle

Added support for Oracle's proprietary close(...) methods.

## 24560: Add ConcurrentJmsSenderTemplate class

Added support for multi-threaded managed JMS sessions.

## 23370: Implement connection recycling

Improved connection reuse within the same transaction.

## 22105: Support commit after close in JMS

Added support for commit-after-close in JMS.

## 24076: Add default transaction timeout property

Added default transaction timeout startup property.

## 24005: Default reapTimeout to 0 to avoid reaping when not anticipated

Reaping is now disabled by default. This improves the expected behavior of the pool.

## 24069: AtomikosConnectionFactoryBean: add setXaConnectionFactory method

It is now possible to configure the new JMS connection factory with a pre-existing XAConnectionFactory instance.

## 23877: JDBC proxy: rethrow vendor SQLException where possible

Improved reporting of native SQLException messages.

## 23878: JMS proxies: rethrow vendor JMSException where possible

Improved reporting of native JMSException messages.

## 23866: Implement new MessageProducerSession

The MessageProducerSession class has been refactored and is now implemented as the JmsSenderTemplate classes in package com.atomikos.jms.extra.

## 23868: Implement new MessageConsumerSessionPool

The MessageConsumerSession and MessageConsumerSessionPool have been refactored into class MessageDrivenContainer in package com.atomikos.jms.extra.

## 24502: loginTimeout not passed on to driver

The loginTimeout for JDBC is now passed on correctly to the underlying JDBC driver.

## 23953: Throw meaningful exception after reaping connection(s)

Using a connection after it's been reaped will now give a better error message.

## 24567: Not ending transaction (set implicit transaction off)

For non-xa use we now restore the autoCommit setting to the value before it had before a JTA transaction was started.

## 24689: Logging not conform to J2EE

Improved logging level of startup properties.

## 24565: OverlappingFileLockException instead of IOException for file channel lock

Better handling of overlapping locks on the log files.

## 22342: Implement new connection factories for JMS

Added pooled connection support for JMS.

## 22972: Support non-JTA JMS commits

Allow local (session-level) commits in JMS.

# Release Notes for TransactionsEssentials 3.3.5

## 24394: Reaper reaping prematurely

Corrected initialization of the reap settings to avoid improper reaping.

## 24566: Wrong java code in jdbc.nonxa.AtomikosThreadLocalConnection

Fixed bug in handling of method calls on a stale handle.

# Release Notes for TransactionsEssentials 3.3.4

## 23844: ClassLoader problem for nonxa JDBC in Tomat

Improved class loading for dynamic proxies.

## 24246: Catch RuntimeExceptions thrown in Synchronization

Improved exception handling in synchronizations.

# Release Notes for TransactionsEssentials 3.3.3

## 23610: Include changes of latest 3.2.x

Included latest changes of the 3.2.x branch.

## 23658: Close JDBC vendorconnection when SessionHandleState is terminated.

Underlying JDBC statements are now cleaned up when a connection is put back in the pool.

# Release Notes for TransactionsEssentials 3.3.2

## 22111: Lock file channel instead of lock file for logs

Improved startup protection - thanks to Allen Yu.

## 23250: Add new pool classes (datasource.pool) to the packaging in the download build file

The build.xml in the download folder now also accounts for the new pool classes.

## 22615: JNDI lookup of DataSource: make it possible to do this out-of-VM

The JDBC datasource can now be looked up in another VM than the one it was bound in (provided that a remotely accessible JNDI registry is used).

## 23539: Resource leaking in Console

Corrected rotating file console house-keeping (thanks to Allen Yu).

## 23251: Add transactions-essentials-all.jar to download zip file

The transactions-essentials-all.jar is now also included by default in the download zip file.

## 23334: clean up prepared tx if disk full

Improved handling of prepared transactions in case the disk is full and further logging fails during commit.

## 23485: release 3.3.1 and jndi with jdbc beans

We now allow JNDI references to be looked up before the datasource is initialized.

# Release Notes for TransactionsEssentials 3.3.1

## 23091: Make console log level case insensitive

The console log level is now case insensitive.

## 23146: merge-in changes from 3.2.4

Included changes from 3.2.4

## 23180: Slf4J check: log exception instead of ignoring it? (3.3.0)

Exceptions related to log4j integration are now logged.

## 23184: ClassLoaderHelper doesn't fallback to Class.forName()

Improved class loading.

## 23185: Cosmetic logging bug in connection pool

Improved logging in connection pool.

## 23020: AtomikosNonXADataSourceBean: improve logging

Improved logging of configuration parameters.

## 23021: AtomikosDataSourceBean: pending comma in logging

Improved logging of configuration parameters.

## 23022: START HERE page refers to old URL for wiki

Updated START HERE page to refer to new website.

# Release Notes for TransactionsEssentials 3.3

Release 3.3 is special in the following main things:

- Refactored JDBC support: the new DataSource implementations are now com.atomikos.jdbc.AtomikosDataSourceBean and com.atomikos.jdbc.nonxa.AtomikosNonXADataSourceBean - the previous datasource implementations are now deprecated and will eventually be left out of the distribution.
- Log4J integration: via SLF4J, you can now send the logging output to log4j as well.
- Better Spring configuration: you can now also configure the non-standard features like our JMX LogAdministrator or the init properties.
- Better handling of recovered hazard transactions.
- Solved problems with ShutdownHook and shutdown of the VM.

The full and detailed list of changes is below...

## 21755: Remove warning: 'depending on license, feature disabled'

Removed obsolete comment on license restrictions.

## 21733: Show linked exception for JMS

Improved logging in case of JMSException instances - now we also try to log the linked exception.

## 21519: Disable shutdownhooks on shutdown

Shutdown hooks now disable themselves on shutdown.

## 21554: Add JmxLogAdministrator on JDK 1.5 or higher

Simplified and documented JMX administration setup.

## 20430: ConnectionPool: create connections when needed, not at startup

The connection pool now creates connections when needed instead of at startup (can be overridden by setting the minimum pool size to the desired value).

## 20638: Include redesigned JDBC

Redesigned and improved JDBC support.

## 21256: Detect connection passing over tx boundaries

Connections can now be passed across transaction boundaries if desired.

## 21316: Include DB2 XA fix

Fixed incompatibility with DB2 (see http://www.atomikos.com/Documentation/KnownProblems#IBM_DB2_Incompatibility).

## 21317: Improve connection pool with shrinking support

The connection pool can now also shrink in size.

## 21319: SimpleDataSourceBean: eliminate GUI classes dependency

Improved SimpleDataSourceBean for headless servers.

## 21453: Configure shutdown hook behaviour

You can now configure whether VM shutdown forces transaction core shutdown with the init parameter com.atomikos.icatch.force_shutdown_on_vm_exit - defaults to false.

## 21487: Implement connection reaping

Connection reaping is now also supported by the JDBC pooling.

## 21797: Add init method to MessageProducerSession

Added init method to com.atomikos.jms.MessageProducerSession.

## 21489: Min size for pool

The pool for JDBC connections now also supports a minimum size.

## 22429: Improve class loading

Improved class loading to be compliant with most J2EE platforms.

## 20558: Threads blocking (waiting and retry) when the connection pool is exhausted

The JDBC connection pool now also supports blocking the calling thread when the pool is exhausted. Special thanks to Mehdi Bennani.

## 20115: Log4j integration

Added Log4J support for the diagnostics.

## 21712: Heuristic hazard logs repeated timeouts

Improved handling of heuristic hazard transactions.

## 22115: AdminToolResourceBundle not found

Fixed lookup problem of the AdminToolResourceBundle for localized interface items.

## 22116: Build of spring examples fails in download

Fixed build of Spring examples in download samples.

## 20140: JDBC NonXa ConnectionProxy Incompatible with OpenJPA

OpenJPA incompatibility fixed: JDBC connection methods of class java.lang.Object no longer trigger transaction enlistment.

## 22118: Add startup property for .lck file to protect logs

Added startup property: com.atomikos.icatch.lock_logs (if set to false, there will be no .lck file that prevents startup).

## 22445: Fix javadoc comments

Improved javadoc formatting.

## 22476: Factor out new (and old) JDBC into separate modules?

Created separate modules (jars) for JDBC support.

# Release Notes for TransactionsEssentials 3.2.7

## 23364: Problem when recovery is called while active transactions exist

We now allow recovery to happen correctly if there are active transactions.

## 23719: TopicReceiverSessionPool: append subscriberName with thread number

To ensure uniqueness of subscriber names, these names are now suffixed with a counter for each pooled instance.

# Release Notes for TransactionsEssentials 3.2.6

## 23629: MessageConsumerSession: show linkedException for receive errors

We now inspect the linked JMS error if present.

## 23642: Clean up log entry: getCompositeTransaction returning null

Improved log comments for the Atomikos core.

## 23645: Bug in 3.2.5 for durable subscriber

Fixed bug: the durable subscribers were not JTA-enabled.

# Release Notes for TransactionsEssentials 3.2.5

## 23605: Support durable subscribers in MessageConsumerSession

Durable subscribers are now support for topics.

## 23608: Improve logging of hazard timeout problems

Logging was improved to show more details about the problem.

# Release Notes for TransactionsEssentials 3.2.4

## 23119: QueueSenderSession does not refresh?

In some cases the JMS sender/producer session classes did not correctly refresh the underlying JMS session.

## 23120: JMS message producer: sending errors should be logged as warnings, not info

JMS sender/producer session: improved logging of warnings .

# Release Notes for TransactionsEssentials 3.2.3

## 21806: Deadlock in core

Fixed deadlock on the (rare) case where the application thread registers a synchronization with the transaction, when a timeout thread attempts rollback concurrently.

## 21904: Avoid repeated logging for hazards

Improved timeout for heuristic hazard cases, to avoid excess logging and thread blocking.

## 21931: Bug in JMS session

Fixed close of intermediary JMS session - see http://www.atomikos.org/forums/viewtopic.php?p=2599

# Release Notes for TransactionsEssentials 3.2.2

## 21666: DataSourceBean: remove checkSetup on close

DataSourceBean: removed checkSetup during close.

## 21705: Deadlock in core (observer callback during state transition)

Fixed problematic deadlock when a timed out transaction interferes with commit synchronization registration (in Spring).

## 21740: stopListening fails for JMS

Added a check for closed UserTransactionManager instances, so usage after close generates an exception.

# Release Notes for TransactionsEssentials 3.2.1

## 21546: Add new logo in docs

Added new logo in PDF guides.

## 21542: DataSourceBeanBeanInfo has NPE

Corrected NullPointerException for DataSourceBean GUI configuration.

## 21552: Improve recovery of committed xa txs

Improved recovery of committed XA transactions.

## 21553: Error in heuristic hazard termination logic

Improved handling of recovered heuristic hazard transactions.

# Release Notes for TransactionsEssentials 3.2

## 20653: Allow single-threaded 2-pase commit

You can now choose to disable multi-threaded two-phase commit by setting the startup property com.atomikos.icatch.threaded_2pc=false

## 20738: Refactor propagator logging

Refactored Propagator logging.

## 21309: Change epoch directory to log directory

The .epoch file is now saved in the same folder as the transaction logs.

## 20002: Test JDBC connections before use

Added testOnBorrow option for the JDBC DataSource implementations - setting this to true will test connection liveness before they are taken from the pool.

## 20224: Ant-style expansion in jta.properties

Values in the jta.properties file can now contain Ant-style references (${...}) to the values of other properties.

## 20112: setXaDataSource in SimpleDataSourceBean

SimpleDataSourceBean now offers setXaDataSource as an alternative way to configure the XADataSource.

## 20167: Generate warning if semicolon omitted

SimpleDataSourceBean now generates a log warning if the xaDataSourceProperties don't contain semicolons.

## 20168: Compile with debug flag (info)

The jars are now compiled with debug flag enabled.

## 20254: Add Lars' contribution for thread pooling

Threads are now reused based on class availability of the JDK thread pools (Java 5 or higher) or the concurrent backport utility (Java 1.4).

## 20545: ExclusiveExternalXAPooledConnectionImp: improve close logic

Connections can now be closed after commit.

## 20566: Change SimpleDataSourceBean: set exclusive mode as default

Simplified JDBC setup: exclusiveConnectionMode now defaults to true.

## 20700: Add logging to SimpleDataSourceBean

Added logging for SimpleDataSourceBean settings.

## 20701: Add logging to NonXaDataSourceBean

Added logging for NonXaDataSourceBean settings.

## 20710: ExternalXAPooledConnectionImp: remove obsolete method

ExternalXAPooledConnectionImp: removed obsolete method.

## 20091: Migrate CVS repository to SVN

The source code repository is now hosted online in SVN.

## 20634: Refactor AtomikosSQLException

Improved AtomikosSQLException support for nested exceptions.

## 21190: change console logs format

The format of the console logs is now easier to read and more conventional.

## 20617: ThreadLocalConnection bug

Improved handling of implemented interfaces in the JDBC connection proxy classes.

## 21183: Update samples with transaction timeout

The Spring JTA examples now also show how to set the transaction timeout.

## 21191: ConnectionPool: avoid getMetaData

The JDBC connection pools now avoid getMetaData() for testing connection liveness - if a validating query is set.

## 20140: JDBC NonXa ConnectionProxy Incompatible with OpenJPA

OpenJPA incompatibility fixed: JDBC connection methods of class java.lang.Object no longer trigger transaction enlistment.

## 20718: NPE on shutdown in Tomcat

Added a workaround to avoid NullPointerException in the JDBC DataSource classes on Tomcat shutdown of webapp.

## 20371: Include test jars in test release

The test jars are now included in the test suite.

# Pre-3.2 Release Notes

## New as from Release 3.1.7

Bug fixes:

- 20744: Destination argument ignored in DefaultJtaMessageProducer

## New as from Release 3.1.6

Bug fixes:

- 20512: Improved handling of nested exceptions by the log files
- 20221: Included missing Oracle JDBC drivers

## New as from Release 3.1.5

Added features:

- 20188: Log warning message if transaction timeout exceeds maximum allowed

Bug fixes:

- FIXED 10108: default value for timeouts in docs
- FIXED 10121: JNDI bean factory for Tomcat 5.5
- FIXED 10120: Problem with oracle access to 2 schemas
- FIXED 10119: stack trace eaten in JDBC
- FIXED 10118: increase default max_timeout in jta.properties
- FIXED 10117: More info on XA error codes
- FIXED 10112: better documentation of timeout settings
- FIXED 10100: IllegalStateException on Timeout
- FIXED 20130: Improve error message: "No transaction for thread"
- FIXED 20015: Removed obsolete classes: XAPooledConnectionImp and ExclusiveXAPooledConnectionImp (both in package com.atomikos.jdbc)
- FIXED 20016: Removed obsolete class: AbstractConnectionFactory (in package com.atomikos.jdbc)

## New as from Release 3.1.4

Bug fixes:

- Fixed 10111: Branching bug for Oracle
- Fixed 10107: UnsupportedOperationException with Glassfish
- Fixed 10104: Duplicate TID

## New as from Release 3.1.3

Bug fixes:

- Fixed 10103: JMS transacted mode not ignored in JTA transaction
- Fixed 10102: Connection.close fails when called after commit/rollback

## New as from Release 3.1.2

Bug fixes:

- Fixed 10099: IBM MQSeries connection overflow
- Fixed 10098: Shutdown race condition

## New as from Release 3.1.1

Bug fixes:

- Fixed 10095: added workaround for OracleAQ XA bug
- Fixed 10093: improved configuration for OracleAQ
- Fixed 10091: improved lookup of transactions properties file in J2EE (web) applications

## New as from Release 3.1.0

Added features:

- 1013: ExceptionListener support in the JMS managed consumer sessions
- 1011: JMS 1.1 support
- 1010: Topic XA support for JMS (sponsored by Webtide)
- 1009: UserTransactionManager now allows setting the automatic startup preference for the core
- 1003: Improved support for Spring (init+close methods on UserTransactionManager, IOC improvement of UserTransactionService)
- 1004: hibernate2 support included
- 1006: hibernate3 support included

Bug fixes:

- Fixed 10088: TemporaryXATransactionalResource name too long
- Fixed 10087: build of demos fails
- Fixed 10085: NonXaDataSourceBean JNDI lookup fails
- Fixed 10084: QueueReceiverSession restarts core after shutdown
- Fixed 10082: QueueReceiverSession threads not daemon
- Fixed 10081: Synchronizations added too much logging overhead
- Fixed 10080: Using jTDS driver throws exception
- Fixed 10079: shutdown(false) may block if intermediate recovery
- Fixed 10077: Log already in use: disable exception if logging is disabled
- Fixed 10066: SysException nested stacktrace not in log
- Fixed 10065: NPE when Oracle is not configured for XA
- Fixed 10058: demo scripts not UNIX compatible
- Fixed 10050: enum prevents compilation with JDK 1.5

## New as from Release 3.0.1

Several bug fixes:

- Fixed bug 10038: JMS demo programs don"t shutdown cleanly
- Fixed bug 10039: NullPointerException in com.atomikos.beans.PropertyImp
- Fixed bug 10040: Useless recoverParticipant method
- Fixed bug 10041: NullPointerException with recovery disabled

## New as from Release 3.0

Atomikos TransactionsEssentials Release 3.0 is a major redesign of Atomikos Transactions, meaning that it will not work as a simple drop-in replacement for earlier releases. When upgrading to 3.0, the following changes should be taken into account.

### Configuration changes

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

## Included from Release 2.0x

- Vastly improved performance.
- Optional automatic resource recovery: XAResource instances can be recovered as they are added to the transaction. This allows unregistered third-party resources to be used while preserving recovery.
- Improved explicit recovery: resources can be registered after startup and will still be recovered.
- New JDBC DataSource bean classes for improved application server compatibility.
- JDBC connections can now be used both inside and outside a transaction.
- Automatic startup and recovery of the transaction service when the JTA interfaces are used.
- New JTA implementations for J2EE use.
- The configuration file is now called "jta.properties".
- UserTransactionService: you no longer get an instance via the Configuration classes, but rather construct an instance directly: "new com.atomikos.icatch.UserTransactionServiceImp();" will do the job.
- TSInitInfo construction: you no longer use the Configuration class for this, but rather you call the method "createTSInitInfo()" on the UserTransactionService object.
- JdbcTransactionalResource: this class was moved to the new package com.atomikos.datasource.xa.jdbc
- JmsTransactionalResource: this class was moved to the new package com.atomikos.datasource.xa.jms
- SysException.printErrorStack() no longer exists. It has been replaced by an overridden implementation of printStackTrace().
- JTA Synchronizations: afterCompletion is called only once, instead of twice in some cases.
- JTA: added tolerance for third-party application servers that don't delist all XAResources before commit.
- Improved JMX administration tools.
- Added log levels for the tm.out file: by setting the property com.atomikos.icatch.console_log_level to either WARN, INFO or DEBUG you can get ever more output.