JMS servers XA support evaluation
Those are the information collected while testing BTM against some JMS servers. Also included:
- An overall evaluation of the database's XA support
- Special features and/or limitations
| Info | ||
|---|---|---|
| ||
JMS servers not providing an implementation of |
If you find mistakes, inconsistencies or simply want some other database to be tested (as long as there is at least a free trial version available) just let us know via the mailing list and we'll consider your request.
Contents
| Table of Contents | ||||
|---|---|---|---|---|
|
ActiveMQ
Supported version(s)
Tested against versions 4.2 and 5.1. All 4.x version prior to 4.1.1 are broken regarding recovery and cannot be used.
Settings
Local transactions cannot be mixed well with global transactions thus you should not enable allowLocalTransactions or ActiveMQ will throw an exception.
Heuristics
I could not find how to list in-doubt transactions nor how to manually terminate them.
Example ResourceLoader configuration
| Code Block |
|---|
resource.ds.className=org.apache.activemq.ActiveMQXAConnectionFactory resource.ds.uniqueName=amq resource.ds.maxPoolSize=5 resource.ds.driverProperties.brokerURL=tcp://localhost:61616 |
SwiftMQ
Supported version(s)
Tested against versions 6.2 but works fine with more recent versions too. You need the JMS XA/ASF Swiftlet extension to be able to use XA transactions.
Settings
All default settings are fine.
Heuristics
The console can be used to list in-doubt transactions and to heuristically terminate and forget them.
Example ResourceLoader configuration
| Code Block |
|---|
resource.ds.className=bitronix.tm.resource.jms.JndiXAConnectionFactory resource.ds.uniqueName=smq resource.ds.maxPoolSize=5 resource.ds.driverProperties.initialContextFactory=com.swiftmq.jndi.InitialContextFactoryImpl resource.ds.driverProperties.providerUrl=smqp://localhost:4001/timeout=10000 resource.ds.driverProperties.name=QueueConnectionFactory |
HornetQ
Supported version(s)
Tested against versions 2.0.0.BETA5. The JndiXAConnectionFactory included in BTM 1.3.2 and lower is too limited, you need BTM 1.3.3 or higher to use HornetQ.
Settings
All default settings are fine.
Heuristics
A JMX console (like the JDK jconsole tool) can be used to list in-doubt transactions and to heuristically terminate them. Just have a look at the org.hornetq/Server/Core JMX object which contains 3 interesting operations: listPreparedTransactions, commitPreparedTransaction, rollbackPreparedTransaction.
Still under investigation.
Example ResourceLoader configuration
| Code Block |
|---|
resource.ds.className=bitronix.tm.resource.jms.JndiXAConnectionFactory resource.ds.uniqueName=hornet resource.ds.maxPoolSize=5 resource.ds.driverProperties.initialContextFactory=org.jnp.interfaces.NamingContextFactory resource.ds.driverProperties.providerUrl=jnp://localhost:1099 resource.ds.driverProperties.extraJndiProperties.java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces resource.ds.driverProperties.name=XAConnectionFactory |
SonicMQ (Progress Software)
Supported version(s)
Tested against versions 7.6. The JndiXAConnectionFactory included in BTM 1.3.2 and lower is too limited (extraJndiProperties), you need BTM 1.3.3 or higher to use SonicMQ. Seems to support local transactions.
Settings
All default settings are fine.
Heuristics
Still under investigation.
Example ResourceLoader configuration
| Code Block |
|---|
resource.cf.className=bitronix.tm.resource.jms.JndiXAConnectionFactory resource.cf.uniqueName=sonicmq resource.cf.maxPoolSize=5 resource.cf.driverProperties.initialContextFactory=com.sonicsw.jndi.mfcontext.MFContextFactory resource.cf.driverProperties.providerUrl=tcp://localhost:2506 resource.cf.driverProperties.securityPrincipal=username resource.cf.driverProperties.securityCredentials=password resource.cf.driverProperties.name=xaConnectionFactory resource.cf.driverProperties.extraJndiProperties.com.sonicsw.jndi.mfcontext.domain=domain |
Required Jars
mfcontext-7.6.jar, sonic_Client-7.6.jar (warning JMS API is included in the Jar), sonic_Crypto-7.6.jar, sonic_XA-7.6.jar, sonic_XMessage-7.6.jar
