zoukankan      html  css  js  c++  java
  • JTA事务管理

    何为分布式事务

     

     

    一个事务包含多个操作,多个操作操作了多个数据源,这样的事务称为分布式事务

    和普通事务的区别

     

    单一数据源,事务管理可以借助数据源本地事务完成,实现简单

     

    分布式事务之困难:不可简单的借助数据源本地事务完成

     

    为什么:

     

    但是这样的事务有保障吗?

    1、提交时,db1提交成功,db2网络不通

    2、提交时con1提交完成,此时应用重启了或者应用及其断电了

     

    分布式事务管理需要什么?

    分布式事务管理需要:

    1协调各数据源提交、回滚、以及应对通信异常的管理机制

    2数据源需要支持这种机制

    3应对应用恢复的机制

     

    从上面可以得出,做分布式事务管理需要的参与者

     

     

     如果是这样,那么

    1 事务管理器协调数据源,两者之间需要通信,并需要一套协议规范

    2为应对网络,主机故障等,事务管理器,数据源需要记录相关的事务日志

    何为XA规范

    X/Open(The open group)提出的分布式事务处理规范,分布式事务处理的工业标准

    XA-DTP

    X/Open Distributed Transaction Processing(DTP)model分布式事务处理模型

     

    XA-流程

     

    XA-两阶段提交

     

    JTA是什么?

    JTA: Java Transaction Api

    Java 根据XA规范提出的事务处理规范

    目的:同意API,简化程序员的学习,简化编程

     

    JTA-API-构成

    面向TMRM提供商的API:

     

    面向编程者的API

     

    UserTransaction

    Jta-tm实现提供商

    JavaEE应用服务器内建JTA事务管理(TM),提供商:

    Weblogic,websphere

    开源、独立的JTA事务管理器(TM)组件:

    Java Open Transaction Manager(JOTM)

    JBoss TS

    Bitronix Transaction Manager(BTM)

    Atomikos

    Narayana

    Jta-rm实现提供商

     

    在连接池组件中一般也会提供包装实现:

     

    Spring中应用JTA

    Spring 自身并未提供jta TM实现,但提供了很好的集成

    根据TM的提供者不通,分为两种应用方式

    方式一:使用JavaEE服务器内建的TM,用法做如下配置即可

     

     

    说明:JtaTransactionManager通过JNDI找到服务器提供的java:comp/UserTransaction,
    java:comp/TransactionManager

    应用使用的数据源需是支持xa的数据源

    方式二:在没有实现TM的应用服务器上(Tomcat,jetty),将独立的TM组件集成到

    我们的应用中

    一:使用轻量级服务器+集成TM组件

     

    二:使用轻量级服务器+集成TM组件

    1、引入TM组件的jar(以Atomikos为例)

    2、配置数据源,一定要是XA数据源

    3、配置事务管理器TM
    TransactionManager的实现bean
    UserTransaction的实现bean
    springJtaTransactionManager(注入TMUserTransaction
    准备两个数据源

     

  • 相关阅读:
    富文本的使用
    sql
    # 多线程:为啥无法避免并发修改异常?(假设有两个线程,线程A,线程B),怎么避免并发修改异常?
    File&&字节流
    IO-字符流
    第二周疑问点
    异常
    常用API-Object+String
    学习JavaSE过程中的疑问点(第一周)
    JavaOOP
  • 原文地址:https://www.cnblogs.com/yjjyves/p/10689751.html
Copyright © 2011-2022 走看看