Here's the significant part of my applicationContext.xml
PHP Code:
<bean id="placeholderConfig"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:init.properties</value>
</property>
</bean>
<!--================= TRANSACTIONAL SETUP ======================-->
<!--================================================================
JOTM CONFIG:
JOTM is an opensource transaction manager for multiple databases.
=================================================================-->
<bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean">
<!-- the transaction timeout -->
<property name="defaultTimeout" value="300" />
</bean>
<!--=================================================================
JOTM Transaction Manager.
A TransactionManager is necessary for suspending and resuming
transactions, as this not supported by the UserTransaction interface.
==================================================================-->
<bean id="jotmTransactionManager" class="org.objectweb.jotm.Current" />
<!--==================================================================
JTA Transaction Manager
===================================================================-->
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="userTransaction" ref="jotm" />
<property name="transactionManager" ref="jotmTransactionManager"/>
</bean>
<!--==================================================================
SPRING AOP Transaction advice
===================================================================-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!-- all methods starting with get are read-only -->
<tx:method name="is*" read-only="true"/>
<tx:method name="get*" read-only="true" />
<tx:method name="find*" read-only="true" />
<tx:method name="load*" read-only="true"/>
<tx:method name="retrieve*" read-only="true"/>
<!-- other methods will get the default transaction settings -->
<!--<tx:method name="*" rollback-for="SecurityException"/>
--><tx:method name="*" rollback-for="Exception"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:advisor id="createUserTransaction" advice-ref="txAdvice" pointcut="execution(* com.oas.admin.services.CreateUserService.createUser(..))"/>
<aop:advisor id="changePasswordTransaction" advice-ref="txAdvice" pointcut="execution(* com.oas.admin.services.ChangePasswordService.changeUserPassword(..))"/>
<aop:advisor id="changeUserStatusTransaction" advice-ref="txAdvice" pointcut="execution(* com.oas.admin.services.ChangeUserStatusService.changeUserStatus(..))"/>
<aop:advisor id="readOnlyBaseAdminTransaction" advice-ref="txAdvice" pointcut="execution(* com.oas.admin.services.BaseAdminService.*(..))"/>
<aop:advisor id="createCustomerAccountTransaction" advice-ref="txAdvice" pointcut="execution(* com.oas.agent.services.CreateCustomerAccountService.createCustomerAccount(..))"/>
<aop:advisor id="createTrialAccountTransaction" advice-ref="txAdvice" pointcut="execution(* com.oas.agent.services.CreateTrialAccountService.createTrialAccount(..))"/>
<aop:advisor id="readOnlyBaseCreateCustomerTransaction" advice-ref="txAdvice" pointcut="execution(* com.oas.agent.services.BaseCustomerService.*(..))"/>
<aop:advisor id="vipGoldTransaction" advice-ref="txAdvice" pointcut="execution(* com.oas.agent.services.VipGolServiceImpl.*(..))" />
<aop:advisor id="promotionRequestTransaction" advice-ref="txAdvice" pointcut="execution(* com.oas.promotion.services.RequestPromotionService.applyPromotion(..))"/>
<aop:advisor id="promotionApproveTransaction" advice-ref="txAdvice" pointcut="execution(* com.oas.promotion.services.VerifyPromotionService.approve(..))"/>
<aop:advisor id="promotionRejectTransaction" advice-ref="txAdvice" pointcut="execution(* com.oas.promotion.services.VerifyPromotionService.reject(..))"/>
<aop:advisor id="accountInfoRequestTransaction" advice-ref="txAdvice" pointcut="execution(* com.oas.accountinfo.services.RequestAccountInfoService.applyAccountRequest(..))"/>
<aop:advisor id="accountInfoApproveTransaction" advice-ref="txAdvice" pointcut="execution(* com.oas.accountinfo.services.VerifyAccountInfoService.approve(..))"/>
<aop:advisor id="accountInfoRejectTransaction" advice-ref="txAdvice" pointcut="execution(* com.oas.accountinfo.services.VerifyAccountInfoService.reject(..))"/>
<aop:advisor id="depositRequestTransaction" advice-ref="txAdvice" pointcut="execution(* com.oas.deposit.services.RequestDepositService.deposit(..))"/>
<aop:advisor id="depositApproveTransaction" advice-ref="txAdvice" pointcut="execution(* com.oas.deposit.services.VerifyDepositService.approve(..))"/>
<aop:advisor id="depositRejectTransaction" advice-ref="txAdvice" pointcut="execution(* com.oas.deposit.services.VerifyDepositService.reject(..))"/>
<aop:advisor id="withdrawRequestTransaction" advice-ref="txAdvice" pointcut="execution(* com.oas.withdraw.services.RequestWithdrawService.withdraw(..))"/>
<aop:advisor id="withdrawApproveTransaction" advice-ref="txAdvice" pointcut="execution(* com.oas.withdraw.services.VerifyWithdrawService.approve(..))"/>
<aop:advisor id="withdrawRejectTransaction" advice-ref="txAdvice" pointcut="execution(* com.oas.withdraw.services.VerifyWithdrawService.reject(..))"/>
<aop:advisor id="cancelTransferTransaction" advice-ref="txAdvice" pointcut="execution(* com.oas.transfer.services.RemoteTransferService.cancelTransfer(..))"/>
<aop:advisor id="finishTransferTransaction" advice-ref="txAdvice" pointcut="execution(* com.oas.transfer.services.RemoteTransferService.finishTransfer(..))"/>
<aop:advisor id="requestOrderTransaction" advice-ref="txAdvice" pointcut="execution(* com.oas.deposit.services.RequestOrderService.applyUpdateOnCredit(..))"/>
<aop:advisor id="netpayTransaction" advice-ref="txAdvice" pointcut="execution(* com.oas.deposit.services.NetpayService.*(..))"/>
</aop:config>
Thanks,
-marckun