Using JBossTS with the Spring Framework
The Spring framework (http://www.springframework.org) allows pluggable transaction managers. If you need XA support for your Spring application then you need to plug in a transaction manager such as JBossTS.
Running inside JBossAS
For use within the JBossAS application server (assuming it's running JBossTS already), you probably don't need to do anything. Just ensure your Spring application is configured to use
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
then the JtaTransactionManager will automatically find and use JBossTS via the application server's JNDI.
JTA without an application server
For standalone use, i.e. outside the application server, where you need JTA, the configuration is almost as easy:
<bean id="jbossTransactionManager" class="com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple"> </bean> <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"> <property name="transactionManager"> <ref bean="jbossTransactionManager"></ref> </property> </bean>
You also need some additional elements in your classpath. Using ant format, these are:
<path id="jbossts"> <fileset dir="${jbossts.home}/lib"> <include name="*.jar"></include> </fileset> <fileset dir="${jbossts.home}/lib/ext"> <include name="*.jar"></include> <include name="*.zip"></include> </fileset> <pathelement location="${jbossts.home}/etc"></pathelement> </path>
JTS (CORBA) Configuration
If you are one of the people who need full JTS support outside the application server, there is a bit more work involved. Aside from a slightly different configuration in the .xml file and including the ORB classes on the classpath, you also need to call some setup methods in your code to correctly initialise JBossTS before performing any transactions.
config:
<bean id="jbossTransactionManager" class="com.arjuna.ats.internal.jta.transaction.jts.TransactionManagerImple"> </bean> <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"> <property name="transactionManager"> <ref bean="jbossTransactionManager"></ref> </property> </bean>
classpath:
<path id="jbossts"> <fileset dir="${jbossts.home}/lib"> <include name="*.jar"></include> </fileset> <fileset dir="${jbossts.home}/lib/ext"> <include name="*.jar"></include> <include name="*.zip"></include> </fileset> <pathelement location="${jbossts.home}/etc"></pathelement> <fileset dir="${jbossts.home}/jacorb/lib"> <include name="*.jar"></include> </fileset> </path>
setup code:
com.arjuna.orbportability.ORB myORB = com.arjuna.orbportability.ORB.getInstance("ServerSide"); com.arjuna.orbportability.RootOA myOA = com.arjuna.orbportability.OA.getRootOA(myORB); myORB.initORB(new String[] {}, null); myOA.initOA();
Caveats
The above guidelines assumes JBossTS 4.2.3.SP3 and Spring 2.0.5. However, neither this combination nor any other is officially supported at this time. That said, if you run into trouble try posting on the User Forum and we'll try to help out.
Useful refs
Comments