Improved exports in our OSGi bundle - for improved OSGi comfort.
As of this release, we no longer use our proprietary logging configuration mechanism. Instead, we now use your application's logging mechanism/framework by configuring a logger for com.atomikos or nested packages. This also yields better performance because w e no longer log to two destinations (our internal tm.out and other) but rather to one.
Improved poolSize javadoc.
The examples for ExtremeTransactions now contain a working OSGi example.
Prior to this release we relied on the JDK logging API. Due to a built-in limitation of the JDK logging, Tomcat-based tm.out files would often be messed up. This should now be fixed, by allowing you to select a different logging strategy like log4j or logback.
Various tuning interventions on String processing to improve performance here and there.
The fact that the pool is being destroyed should not be a warning but rather an informational log entry. This has now been implemented as such.
The logging noise in JDBC has been reduced significantly.
Added warning to the log if prepare yields errors.
Merged-in the bug fixes from releases 3.6.9-3.6.11 and 3.5.15-3.5.18 (see below for details).
Improved shutdown procedure to wait for any listener threads to exit first. This should avoid ugly shutdown warnings and improve overall shutdown.
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.
Corrected NullPointerException bug on recovery of certain transaction states.
Added workaround for MQSeries memory leak when connectivity to the broker goes down.
We now log a warning if a connection pool is shutdown while some connections are still being used.
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.
Improved the retry/refresh logic when the JMS backed is unreachable.
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.
Fixed a bug where closing a JMS session would also close the underlying vendor session, leading to problematic rollback/commit.
Improved logging of non-recoverable coordinators to help diagnose problems.
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.
Improved exports in our OSGi bundle - for improved OSGi comfort.
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.
Improved poolSize javadoc.
The examples for ExtremeTransactions now contain a working OSGi example.
Corrected the documentation: removed obsolete references to folders that no longer exist in the 3.7 release.
Corrected the link to the Atomikos team page in the release documentation.
This bug has now been fixed.
Ported fix for case 80464 - error on shutdown of MessageDrivenContainer.
Ported fix for case 83599: MessageDrivenContainer - add receiveTimeout property.
Removed obsolete reference to OraXidFactory in the docs.
Added the RMI examples - missing in the 3.7.0 release.
Improved checks for max length of the different names that form the Xid together.
Threaded commits are now disabled by default, since they cause too many issues with JDBC and JMS connectors.
Optimized logging overhead for performance.
Improved logging when this happens.
Fixed a bug where the XASession of the underlying JMS connector was closed too early.
Added working javadoc references for the open source release.
Fixed clientID issues with ActiveMQ (and other durable subscriber scenarios).
Updated docs to reflect JDK 1.5 requirement.
We now log this as INFO, not WARN - to avoid log pollution.
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.
Added missing jta.properties file.
Added missing sources in TransactionsEssentials distribution.
Fixed a bug where INFO level comments were logged as DEBUG instead.
Fixed recompilation problem in the TransactionsEssentials distribution.
Fixed obsolete reference to missing test folder in recompilation of the TransactionsEssentials distribution.
TransactionsEssentials now includes the missing source code.
You can now use our JMS connections without getting warnings whenever you disable JTA usage.
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.
Fixed the demo scripts to work on UNIX systems.
The javadoc is now included in the ExtremeTransactions release (but not for TransactionsEssentials).
The transactions-essentials.jar has been replaced with the transactions-osgi.jar, and the latter is also our main OSGi bundle.
We now log a warning message if the min/maxPoolSize is set to the default value (1) - in order to avoid performance problems.
TransactionsEssentials now includes the missing source code.
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.
Improved the diagnostic message when this happens.
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.
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
We now also allow non-query SQL statements in the testQuery property - cf http://fogbugz.atomikos.com/default.asp?community.6.1117.3#discussTopic1124
We now also deregister all MBeans created by the JmxTransactionService - cf http://fogbugz.atomikos.com/default.asp?community.6.1430.0
Improved logging of commit decisions to avoid NullPointerException instances on recovery - cf http://fogbugz.atomikos.com/default.asp?community.6.1530.0
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
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
We now include the underlying cause exceptions.
Reap functionality did not always update the connection state and this confused the pool.
Fixed a bug in closing the MessageConsumerSession (used by the MessageDrivenContainer) in order to improve connection/session cleanup upon closing.
Fixed a bug in readOnly mode to release connections in case of two-phase commit.
Removed reference to the old forums.
We now also show the name of the file that has problems.
Sometimes a crash would corrupt the epoch file - this has now been fixed.
We now upload releases to our online maven repository.
Fixed a deadlock occurring in non-JTA/XA use of our JMS.
Improved exception handling in case of corrupted log files - see http://fogbugz.atomikos.com/default.asp?community.6.866.1
Added a sync call upon writing the epoch file.
Fixed a bug in testing XAConnections - see http://fogbugz.atomikos.com/default.asp?community.6.853.0
Improved exception handling in the JMS listener thread.
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.
The reap logic did not correctly take into account the acquisition time.
Improved performance by checking the SLF4J log level to avoid unnecessary synchronization issues.
It is now possible to specify a default isolation level on the main datasource classes.
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
When you configure the deprecated drivers, you will now get a warning in the console log file.
The product version is now written into the console log file during startup.
We now write the information to the console file before doing the XA calls. This improves diagnostics in case of exceptions.
Added a sync call upon writing the epoch file.
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.
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.
Added synchronization to avoid concurrency effects.
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.
Improved diagnostic warnings to clarify the consequence of using non-transacted sessions.
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.
Corrected a JMS initialization bug as suggested in the forums: http://fogbugz.atomikos.com/default.asp?community.6.460.3
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.
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.
The xidFactory attribute had been removed from the bean class but not from the bean descriptor; this is now fixed.
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.
Fixed a threading issue reported in the forums: http://fogbugz.atomikos.com/default.asp?community.6.506.0
Fixed a bug in the JMS JNDI mechanism - for details see this forum post: http://fogbugz.atomikos.com/default.asp?community.6.460.1
Improved the logic for borrowing a connection.
Fixed a bug where race conditions could lead to NullPointerExceptions in checking a non-xa connection's reusability.
Fixed a bug in the connection state handling: timeout and rollback could result in a JDBC connection with autoCommit on.
The xidFactory attribute had been removed from the bean class but not from the bean descriptor; this is now fixed.
The property name in the sample jta.properties file was wrong - this has been corrected.
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
Fixed a deadlock case between the connection pool and the JMS pooled connection, due to a synchronized observer callback.
We now offer a maven POM structure as a separate download.
Improved (clarified) heuristic log comments for XA branches.
Improved recovery when the JDBC/XA drivers are upgraded between shutdown and restart.
The MessageDrivenContainer now supports unsubscribe on close - meaning that closing the container will also unsubscribe for any durable subscriptions (if this option is set).
The JmxLogAdministrator can now be configured to show only heuristic transactions (i.e., the real problem cases) instead of all active transactions.
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.
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.
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...
The build now works for Java 5 also. Previously, the build could only be done on JDK 1.4
Heuristic (hazard) exception states are now managed even better - this includes improved retry handling and better resolution after recovery.
Fixed a deadlock in the JMS pools.
Simplified the thread-specific reuse of non-xa JDBC connections, by exploiting the newer 'connection recycling' that is now built-in into the pools.
Heuristic log comments were improved for extra clarity.
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.
We have added a Hibernate ConnectionProvider implementation to facilitate Hibernate 3.3+ configuration of the DataSource.
It is now possible to resume a transaction after it was marked as rollbackOnly.
The MessageDrivenContainer now allows (re)setting most of its properties after initialization.
Fixed pool start-up resilience to DBMS unavailability.
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.
Improved handling or recovery interleaved with active transaction processing.
Added extra strategy for loading proxy classes and interfaces, as suggested by http://fogbugz.atomikos.com/default.asp?community.6.317.7
Corrected a bug where enlist failures (such as lost connectivity to back-end) would cause recurring connection problems in the pool.
Optimized dynamic proxy handling to avoid JDK overhead.
Instances of the datasource can now be marked as 'readOnly', in which case the exceptions upon recovery should go away.
Fixed blocking problem in the Spring/jms/ActiveMQ sample.
Fixed concurrency problem in JDBC.
Fixed timeout overflow for large integers.
Added inclusion of the 'deprecated' JMS jars in the download.
Added Oracle JMS patch code.
Improved closing of sessions in the new JMS facilities.
The Bridge classes in package com.atomikos.jms have been dropped - this functionality can easily be implemented in the application layer.
Hibernate 3.3 and higher are now supported.
The default value for the xaProperties in JMS and JDBC is now an empty set of properties.
It is now possible to configure the datasource with a pre-configured XADataSource instance.
Improved exception error codes/messages.
Added support for Oracle's proprietary close(...) methods.
Added support for multi-threaded managed JMS sessions.
Improved connection reuse within the same transaction.
Added support for commit-after-close in JMS.
Added default transaction timeout startup property.
Reaping is now disabled by default. This improves the expected behavior of the pool.
It is now possible to configure the new JMS connection factory with a pre-existing XAConnectionFactory instance.
Improved reporting of native SQLException messages.
Improved reporting of native JMSException messages.
The MessageProducerSession class has been refactored and is now implemented as the JmsSenderTemplate classes in package com.atomikos.jms.extra.
The MessageConsumerSession and MessageConsumerSessionPool have been refactored into class MessageDrivenContainer in package com.atomikos.jms.extra.
The loginTimeout for JDBC is now passed on correctly to the underlying JDBC driver.
Using a connection after it's been reaped will now give a better error message.
For non-xa use we now restore the autoCommit setting to the value before it had before a JTA transaction was started.
Improved logging level of startup properties.
Better handling of overlapping locks on the log files.
Added pooled connection support for JMS.
Allow local (session-level) commits in JMS.
Corrected initialization of the reap settings to avoid improper reaping.
Fixed bug in handling of method calls on a stale handle.
Improved class loading for dynamic proxies.
Improved exception handling in synchronizations.
Included latest changes of the 3.2.x branch.
Underlying JDBC statements are now cleaned up when a connection is put back in the pool.
Improved startup protection - thanks to Allen Yu.
The build.xml in the download folder now also accounts for the new pool classes.
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).
Corrected rotating file console house-keeping (thanks to Allen Yu).
The transactions-essentials-all.jar is now also included by default in the download zip file.
Improved handling of prepared transactions in case the disk is full and further logging fails during commit.
We now allow JNDI references to be looked up before the datasource is initialized.
The console log level is now case insensitive.
Included changes from 3.2.4
Exceptions related to log4j integration are now logged.
Improved class loading.
Improved logging in connection pool.
Improved logging of configuration parameters.
Improved logging of configuration parameters.
Updated START HERE page to refer to new website.
Removed obsolete comment on license restrictions.
Improved logging in case of JMSException instances - now we also try to log the linked exception.
Shutdown hooks now disable themselves on shutdown.
Simplified and documented JMX administration setup.
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).
Redesigned and improved JDBC support.
Connections can now be passed across transaction boundaries if desired.
Fixed incompatibility with DB2 (see http://www.atomikos.com/Documentation/KnownProblems#IBM_DB2_Incompatibility).
The connection pool can now also shrink in size.
Improved SimpleDataSourceBean for headless servers.
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.
Connection reaping is now also supported by the JDBC pooling.
Added init method to com.atomikos.jms.MessageProducerSession.
The pool for JDBC connections now also supports a minimum size.
Improved class loading to be compliant with most J2EE platforms.
The JDBC connection pool now also supports blocking the calling thread when the pool is exhausted. Special thanks to Mehdi Bennani.
Added Log4J support for the diagnostics.
Improved handling of heuristic hazard transactions.
Fixed lookup problem of the AdminToolResourceBundle for localized interface items.
Fixed build of Spring examples in download samples.
OpenJPA incompatibility fixed: JDBC connection methods of class java.lang.Object no longer trigger transaction enlistment.
Added startup property: com.atomikos.icatch.lock_logs (if set to false, there will be no .lck file that prevents startup).
Improved javadoc formatting.
Created separate modules (jars) for JDBC support.
We now allow recovery to happen correctly if there are active transactions.
To ensure uniqueness of subscriber names, these names are now suffixed with a counter for each pooled instance.
We now inspect the linked JMS error if present.
Improved log comments for the Atomikos core.
Fixed bug: the durable subscribers were not JTA-enabled.
Durable subscribers are now support for topics.
Logging was improved to show more details about the problem.
In some cases the JMS sender/producer session classes did not correctly refresh the underlying JMS session.
JMS sender/producer session: improved logging of warnings .
Fixed deadlock on the (rare) case where the application thread registers a synchronization with the transaction, when a timeout thread attempts rollback concurrently.
Improved timeout for heuristic hazard cases, to avoid excess logging and thread blocking.
Fixed close of intermediary JMS session - see http://www.atomikos.org/forums/viewtopic.php?p=2599
DataSourceBean: removed checkSetup during close.
Fixed problematic deadlock when a timed out transaction interferes with commit synchronization registration (in Spring).
Added a check for closed UserTransactionManager instances, so usage after close generates an exception.
Added new logo in PDF guides.
Corrected NullPointerException for DataSourceBean GUI configuration.
Improved recovery of committed XA transactions.
Improved handling of recovered heuristic hazard transactions.
You can now choose to disable multi-threaded two-phase commit by setting the startup property com.atomikos.icatch.threaded_2pc=false
Refactored Propagator logging.
The .epoch file is now saved in the same folder as the transaction logs.
Added testOnBorrow option for the JDBC DataSource implementations - setting this to true will test connection liveness before they are taken from the pool.
Values in the jta.properties file can now contain Ant-style references (${...}) to the values of other properties.
SimpleDataSourceBean now offers setXaDataSource as an alternative way to configure the XADataSource.
SimpleDataSourceBean now generates a log warning if the xaDataSourceProperties don't contain semicolons.
The jars are now compiled with debug flag enabled.
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).
Connections can now be closed after commit.
Simplified JDBC setup: exclusiveConnectionMode now defaults to true.
Added logging for SimpleDataSourceBean settings.
Added logging for NonXaDataSourceBean settings.
ExternalXAPooledConnectionImp: removed obsolete method.
The source code repository is now hosted online in SVN.
Improved AtomikosSQLException support for nested exceptions.
The format of the console logs is now easier to read and more conventional.
Improved handling of implemented interfaces in the JDBC connection proxy classes.
The Spring JTA examples now also show how to set the transaction timeout.
The JDBC connection pools now avoid getMetaData() for testing connection liveness - if a validating query is set.
OpenJPA incompatibility fixed: JDBC connection methods of class java.lang.Object no longer trigger transaction enlistment.
Added a workaround to avoid NullPointerException in the JDBC DataSource classes on Tomcat shutdown of webapp.
The test jars are now included in the test suite.