[jbosscache-dev] Support for JBoss JTA and pluggable TM testing complete

Jason T. Greene jason.greene at redhat.com
Thu Oct 4 11:59:42 EDT 2007


Everyone,

I have added support for JBoss JTA standalone in Core Cache. To enable 
it simply define transactionManagerLookupClass to be "JBossStandalone 
JTAManagerLookup".

I have also modified our testsuite to support a pluggable TM. This 
includes a new testing profile for JBossJTA. When adding future tests 
that you would like to be included in this profile, make sure you put 
them in the "transaction" group.  This can be ran as follows:

mvn -Ptransaction-jbossjta

It is very important that all new tests be TM portable (I have already 
fixed the existing ones). So, unless you are explictly testing a 
specific TM, you should use the following techniques when using 
transactions:

1. Configure the transaction manager using 
TransactionSetup.getManagerLookup like so:

cache.getConfiguration().setTransactionManagerLookupClass(TransactionSetup.getManagerLookup());

2. Obtain UserTransaction from TransactionSetup.getUserTransaction();

3. Obtain the transaction manager, if you need it, from the cache:
cache.getConfiguration().getRuntimeConfig().getTransactionManager();

Alternatively, if there is no cache in your test, you can use 
TransactionSetup:

TransactionSetup.getTransactionManager();

4. Always use TransactionManager.commit()/setRollbackOnly()/rollback() 
where possible.  Calling Transaction.commit() and Transaction.rollback() 
does _not_ clear the Transaction associated with the current thread. 
According to the spec future begin() calls must fail, so if you do this 
it becomes your job to clear the thread (using suspend). Alot of test 
code did not do this properly, which was fine with 
DummyTransactionManager, but broke any spec compliant TM.

-Jason




More information about the jbosscache-dev mailing list