java的框架spring如何配置分布式事务?

在配置文件中已经配置了多个数据源如何配置分布式事务?一般用什么技术?怎么写配置稳定... 在配置文件中已经配置了多个数据源 如何配置分布式事务?一般用什么技术?怎么写配置稳定 展开
 我来答
薇美缘h
推荐于2017-09-12 · TA获得超过468个赞
知道小有建树答主
回答量:365
采纳率:50%
帮助的人:177万
展开全部

分布式事务是指操作多个数据库之间的事务,在tomcat下是没有分布式事务的,可以借助于第三方Jotm和Automikos实现,下面就写一个使用Jotm实现分布事务的例子,如有不足,请各位大大指点:

  1. Dao及实现,先写出一个interface再去实现他,可能有些人觉得直接写实现类多好,但我还是建议为了结构清晰,增强代码的可读性,可维护性还是先写接口再去实现的好: 

    先写一个interface,定义要实现的方法:


    实现接口,传入一个String ds来判断调用哪个JdbcTemplate:


  2. service及实现:

    还是接口与他的实现:

    持久化的操作:

  3. applicationContext.xml

    基本的spring配置以及Jotm bean;

    JTA事务管理器,数据源datasourceA和datasourceB配置:

    事务切面配置aop,通知配置以及dao,service配置:

  4. 单元测试,在实际项目中就是写一个controller:

jamxval
2014-12-23 · TA获得超过6823个赞
知道大有可为答主
回答量:4308
采纳率:82%
帮助的人:1453万
展开全部
分布式事务本身不是程序做的,我们不需要在代码中明确地做这些事,因为是不是分布式对于代码来说,代码写起来完全相同。
只是选择支持 JTA XA (也叫 2-Phase Commit, 2PC) 的数据源就可以了,你默认使用的 DataSource 可能不是 XA ( Weblogic 把它叫 TX)。

一般在网站编程时多数人可能是用 Spring 搭配 tomcat commons-dbcp 那个数据源,那个可能就不是支持 XA 的数据源,如果你打算在复杂企业应用生态系统中使用J2EE 就不要用 Spring 提供 commonbs-dbcp 那种小作坊式的做法,因为它是假设自己的程序就是独立生态系统,当你需要与外界打交道时就碰到诸多问题,这也是为什么很多大企业依然还是会使用 EJB 的原因(EJB 已经考虑到这点,并把它写入到J2EE 标准中),我们推荐用服务器自己的数据源,也就是 lookup JNDI,这样的话,是不是 XA 事务就由服务器的配置来定制,代码就不需要任何配置来决定是不是 XA 了 ;事务本身是不是 XA (分布式的)是服务器的事,服务器来管理“资源” (包括数据源,JMS 连接等,一个资源(JDBC连接)如何参与事务是“资源管理器”(驱动程序)的职责,跟程序无关),服务器提供事务管理并作为“事务协调者”来处理多个“资源管理器”(不同的数据库连接)之间的事务一致性,,而 Spring 的职责很简单,对于我们希望 Spring 自动提交或回滚事务时,在配置中指定需要回滚的异常的类型。

不过我没有实际使用过 Spring,我有多年的 EJB 经验,这其中的原理是相同的,因为这是 J2EE 标准规范要求达到的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式