<!-- 事务用spring管理atomikos -->
<bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager"
init-method="init" destroy-method="close">
<property name="forceShutdown">
<value>true</value>
</property>
</bean>
<bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp">
<property name="transactionTimeout" value="300" />
</bean>
<!- Spring Jta事务管理 ->
<bean id="jtaTransactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager" >
<property name="transactionManager">
<ref bean="atomikosTransactionManager" />
</property>
<property name="userTransaction">
<ref bean="atomikosUserTransaction" />
</property>
<!-- 必须设置,否则程序出现异常 JtaTransactionManager does not support custom isolation
levels by default -->
<property name="allowCustomIsolationLevels" value="true" />
</bean>
<!- 事务管理策略 ->
<tx:advice id="txAdvice" transaction-manager="jtaTransactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" read-only="false"
rollback-for="com.*.common.exception.FrameException" />
...
<tx:method name="find*" read-only="true" />
...
</tx:attributes>
</tx:advice>
<!-- 把事务控制在Service层 -->
<aop:config>
<aop:pointcut id="transactionPointcut"
expression="execution(* com.*.*.service.*.internal.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="transactionPointcut" />
</aop:config>