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
