使用JTA事务,jboss,weblogic,websphere 等等ejb容器都自带了jta事务的支持,如果你使用tomcat,jetty或者其他web容器,则需要安装第三方的jta插件,假定这里使用jboss容器,则需要在jboss中配置JNDI数据源,比如有两个mysql的数据源需要被JTA管理,则需要在jboss的server/default/deploy目录下新建两个数据源文件app1-ds.xml和app2-ds.xml,这里只拿一个文件做例子,内容如下所示:
com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
jdbc:mysql://localhost:3306/test
org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter
完成JNDI数据源配置后,需要在spring中获取JNDI数据源,配置如下:
然后定义JTA事务如下:
通过声明式事务模板(代理),指定目标类的特定方法采用JTA事务: