You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by James Carman <ja...@carmanconsulting.com> on 2012/08/31 16:32:00 UTC

Transaction Management Strategy Advice?

Our environment:

Fuse ESB: apache-servicemix-4.4.1-fuse-03-06
Websphere MQ: 7.1.0.1
SQL Server 2008 (various databases)
Aries JPA
Aries Transaction
Aries JNDI
Configuration using Blueprint


We are putting "adapter" modules (essentially service layers) in front
of all of our databases to encapsulate them and make unit testing
easier (mock objects).  The adapter modules talk to the databases
using a combination of JPA/stored procedures.  We use the Aries JPA to
configure our JPA entity managers.  For our adapter services, we use
the Aries transaction demarcation support in our blueprint
configuration files.

My understanding (after a colorful conversation on the Camel IRC
channel) is that we should *not* attempt to use XA with Websphere MQ,
since it's not well-supported.  Thus, for our Camel routes, we are
using a "chained" transaction manager [1] to try to group things
together so that everything stays in sync.  Now, the chained
transaction manager is configured with two transaction managers.  The
first one is the Aries (geronimo) transaction manager, which
implements PlatformTransactionManager.  The second one is a
JmsTransactionManager (which obviously also implements PTM) which is
configured to talk to the WMQ connection factory.

All of our data sources are configured in the <SMX_HOME>/deploy
directory using blueprint and they are DBPC "managed" data sources,
which "point" to the Aries transaction manager (through its JTA
"TransactionManager" interface).

I'm wondering what folks think about this set up.  Do you have any
advice on how to improve this?  Is this a crazy thing to do?

Thanks,

James

[1] https://github.com/SpringSource/spring-data-neo4j/tree/master/spring-data-neo4j-tx/src/main/java/org/springframework/data/neo4j/transaction