首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring事务提交和回滚机制,以及分布式事务处理解决方案

在发生未检查异常时,事务将回滚并数据库操作将被撤销。检查异常(checked exception):当事务方法抛出检查异常时,默认情况下Spring不会自动回滚事务。...这是因为检查异常通常表示一个业务逻辑错误,可能是临时或者可以修复。如果想要让Spring也回滚事务,可以使用@Transactional注解rollbackFor属性指定需要回滚异常类型。...对于分布式事务处理,Spring提供以下支持和解决方案:JTA(Java Transaction API)事务管理器:Spring支持使用JTA事务管理器来处理分布式事务。...JTA是Java平台上标准分布式事务管理API,可以与不同事务管理器(JBOSS、WebSphere等)集成。...开发者可以通过配置数据源和事务管理器来启用数据库XA事务。基于消息队列(MQ)事务消息:Spring提供了对JMS和AMQP(RabbitMQ)支持,可以使用消息队列来处理分布式事务

58291

Java事务管理

JTA只提供接口,没有具体实现,需要J2EE服务提供商根据JTS规范提供,常见JTA实现方式: J2EE容器提供JTA实现(JBOSS) 独立JTA实现:JOTM、Atomikos。...(Tomcat、Jetty以及普通java应用) JTA提供了 java.transaction.UserTransaction,里面定义了下面的方法: begin:开启一个事务 commit:提交一个事务...就能把普通JDBC操作直接转成JTA操作,JTA对DataSource、Connection与Resource都是有要求,只有符合XA规范,并且实现了XA规范相关接口类才能参与到JTA事务来。...事务,本例是由Jboss容器管理 javax.sql.DataSource ds = (javax.sql.DataSource) context .lookup("java:/XAOracleDS"...发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

68840
您找到你想要的搜索结果了吗?
是的
没有找到

JTA规范

下面介绍一下在JTA规范,模型各个组件作用: 事务管理器(transaction manager): 处于图中最为核心位置,其他事务参与者都是与事务管理器进行交互。...一些常见其他web容器,jboss、weblogic、websphere等,都可以作为application server,这些web容器都实现了JTA规范。...特别需要注意是,并不是所有的web容器都实现了JTA规范,tomcat并没有实现JTA规范,因此并不能提供事务管理器功能。...又或者我们使用web容器并没有事务管理器功能,tomcat。对于这些情况,我们可以直接使用一些第三方事务管理器类库,JOTM和Atomikos。...常见TM提供者包括我们前面提到application server,包括:jboss、ejb server、weblogic等,以及一些以第三方类库形式提供事务管理器功能jotm、Atomikos

1K30

使用Atomikos实现JTA分布式事务

一些常见其他web容器,jboss、weblogic、websphere等,都可以作为application server,这些web容器都实现了JTA规范。...特别需要注意是,并不是所有的web容器都实现了JTA规范,tomcat并没有实现JTA规范,因此并不能提供事务管理器功能。...又或者我们使用web容器并没有事务管理器功能,tomcat。对于这些情况,我们可以直接使用一些第三方事务管理器类库,JOTM和Atomikos。...JTA规范,规定CRM需要实现JTS规范定义接口。 下图更加直观演示了JTA规范各个模型组件之间是如何交互: ?...常见TM提供者包括我们前面提到application server,包括:jboss、ejb server、weblogic等,以及一些以第三方类库形式提供事务管理器功能jotm、Atomikos

3.2K31

Spring 分布式事务实现

基于MQ,JTA实现多服务分布式事务 Orderservice监听新订单队列消息,获取之后新增订单,成功则往新订单缴费队列写消息,中间新增订单过程使用JTA事务管理,当新增失败则事务回滚,不会往新订单缴费队列写消息...,此时可以使用事务失败回滚方式依次回退,这种叫弱一致性;又或者可以把处理失败内容发送至一个错误队列,由人工处理等方式解决,这种叫最终一致性。...使用 Spring JTA 可以使用 JBoss之类应用服务器提供JTA事务管理器 Atomikos、Bitronix等库提供JTA事务管理器 禁止使用JTA 为什么禁用JTA ?...因为JTA采用两阶段提交方式: 第一次是预备阶段 第二次才是正式提交 当第一次提交出现错误,则整个事务出现回滚,一个事务时间可能会较长,因为它要跨越多个数据库多个数据资源操作,所以在性能上可能会造成吞吐量低...MQ 事务尚未提交,所以可直接回滚。这也就是不使用 JTA 时遇到最大难题。

48820

分布式事务解决方案框架(LCN)

事物概念 事物特性(ACID) 原子性(A) 所谓原子性就是说,在整个事务所有操作,要么全部完成,要么全部不做,没有中间状态。...持久性(D) 所谓持久性,就是说一单事务完成了,那么事务对数据所做变更就完全保存在了数据库,即使发生停电,系统宕机也是如此。...XA实现分布式事务原理如下: 什么是Jta 作为java平台上事务规范JTA(Java Transaction API)也定义了对XA事务支持,实际上,JTA是基于XA架构上建模,在JTA ,...像很多其他java规范一样,JTA仅仅定义了接口,具体实现则是由供应商(J2EE厂商)负责提供,目前JTA实现主要由以下几种: 1.J2EE容器所提供JTA实现(JBoss) 2.独立JTA...实现:JOTM,Atomikos.这些实现可以应用在那些不使用J2EE应用服务器环境里用以提供分布事事务保证。

58250

分布式事务事务实现模式与技术(四)

分布式事务介绍 在分布式系统实现事务就是分布式事务,分布式系统CAP原则是: 一致性 可用性 分区容错性 是分布式事务主要是保证数据一致性,主要有三种不同原则 强一致性 弱一致性 最终一致性...监听新订单队列消息,获取之后新增订单,成功则往新订单缴费队列写消息,中间新增订单过程使用JTA事务管理,当新增失败则事务回滚,不会往新订单缴费队列写消息; 再比如User service 扣费成功后...,往新订单转移票队列写消息,这时Ticket service 正在处理或者处理中发生了失败,这中间过程中用户查看自己余额已经扣费成功,但票信息却没有,此时可以使用事务失败回滚方式依次回退,这种叫弱一致性...Spring JTA分布式事务实现 可以使用JBoss之类应用服务器提供JTA事务管理器 可以使用Atomikos、Bitronix等库提供JTA事务管理器 不使用Spring JTA分布式事务实现...,消息放回至MQ队列,重试重新触发该方法 可能存在问题:会重复数据库操作,因为database transaction不是使用JTA事务管理,所以database已经commit成功;如何避免,需要忽略重发消息

1.2K30

Spring分布式事务实现

分布式事务是指操作多个数据库之间事务,springorg.springframework.transaction.jta.JtaTransactionManager,提供了分布式事务支持...JTA全称为Java Transaction API,顾名思义JTA定义了一组统一事务编程接口,这些接口如下: XAResource  XAResource接口是对实现了X/Open CAE规范资源管理器...注意:在上图中3和5步骤之间省略了应用程序对资源操作 (CRUD)。另外,应用服务器什么时机 enlistResource,又是什么时候delistResource呢?这在后文中会解释。...有关JCA 下图为JCA架构图 ? 中间涉及元素说明如下: 1)Enterprise Information System 简称EIS,在JTA它又被称为资源管理器。...典型应用服务器有JBoss、JOnAS、Geronimo、GlassFish等。

90150

Spring认证中国教育管理中心-Apache Geode Spring 数据教程十八

)和其他 JTA 资源管理事务。...因此,Apache Geode 必须被定位为JTA 事务(准备阶段)“最后一个资源”,因为它没有实现两阶段提交协议,或者更确切地说,它不处理分布式事务。...许多支持 CMT 托管环境在基于 JTA 事务维护对“最后资源”、非 XA 兼容资源支持,尽管 JTA 规范实际上并不需要它。...但是,无论您是在具有支持“最后资源”开源 JTA 事务管理实现独立环境中使用 Apache Geode ,还是在托管环境(例如 Java EE AS, WAS)中使用 Apache Geode,Apache...并且 Spring 事务管理基础设施和 Spring Data for Apache Geode @EnableGemFireAsLastResource注解配置组合就可以解决问题

19510

Spring Boot+MyBatis+Atomikos+MySQL(附源码)

我们在实际项目中,尽量规避分布式事务。但是,有些时候是真的需要做一些服务拆分从而会引出分布式事务问题。 同时,分布式事务也是面试市场被问,可以拿着这个案例练练手,面试就可以说上个123了。...分布式事务解决实现方案有: 基于消息队列分布式事务方案(RocketMQ开源方案) 基于分布式事务框架分布式事务方案(Seata、TCC-Transaction等框架) 基于XA协议分布式事务方案...(JTA等) 基于可靠消息最终一致性分布式事务方案(阿里巴巴分布式事务中间件GTS) 基于CAP原理分布式事务方案(CQRS架构事件溯源模式) 什么是JTA ?...如果我们有一个应用,它使用JTA接口实现事务,应用在运行时候,就需要一个实现JTA容器,一般情况下,这是一个J2EE容器,像JBoss,Websphere等应用服务器。...这样我们就能够在Tomcat或者Jetty之类服务器上运行使用JTA实现事务应用系统。 在上面的本地事务和外部事务区别说到,JTA事务是外部事务,可以用来实现对多个资源事务性。

36730

Java面试手册:J2EE

那么下面就让我们详细介绍一下两种区别: Web 服务器通常比应用服务器简单,apache就是web服务器,jboss就是ejb应用服务器。...J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。...5、请对以下在J2EE中常用名词进行解释(或简单描述) web容器: 给处于其中应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接更容器环境变量接口交互,不必关注其它系统问题...主要实现各个应用程序之间通讯。包括点对点和广播。 JTA: (Java Transaction API)JAVA事务服务。 提供各种分布式事务服务。应用程序只需调用其提供接口即可。...12、如何在weblogic中进行ssl配置与客户端认证配置或说说j2ee(标准)进行ssl配置?

1.2K10

nodeEE双写与分布式事务要点一二

数据库与缓存双写问题 计算机领域任何一个问题都可以通过增加一个抽象“层”来解决。 业务为了减少热点数据不必要db查询,往往会增加一层缓存来解决I/O性能。...可是I/O多了一层也就多了一层更新维护与容错保障,当修改db某些数据时,往往会面临缓存更新问题,在这里简单介绍 数据库与缓存双写问题以及在业务场景如何使用双写策略。...缓存操作问题 在上一节中提到所有缓存更新策略都是在暂时不考虑缓存操作失败情况(网络原因、redis服务不可用等)前提下讨论,如果缓存操作失败,则必须通过业务代码重试、消息队列或者设置缓存超时解决...分布式事务 比较遗憾是,在node领域还没有类似JAVAJTA规范及其实现,JTA规范核心“事务管理器TM”大都由容器来实现,如常见jboss和websphere;TM接收业务层事务请求,同时协同参与事务各个资源管理器...RMdbms、mq等,实现分布式事务提交与回滚;同时也提供分布式事务在不同自治系统传递。

79020

分布式缓存选择

JTA JTA只是Java实现XA事务一个规范,全称Java事务规范JTA(Java Transaction API) ,我们日常使用@Transactional。都可以叫JTA事务管理。...实际上,JTA是基于XA架构上建模, 对于Spring来说,可以使用JBoss之类应用服务器提供JTA事务管理器;可以以使用Atomikos、Bitronix等库提供JTA事务管理器。...如果你要操作别人服务库,你必须是通过调用别的服务接口来实现,绝对不允许交叉访问别人数据库。 问题 同步阻塞问题: 二阶段提交算法在执行过程,所有参与节点都是事务阻塞型。...为了解决两阶段提交同步阻塞和数据不一致问题,三阶段提交引入了超时机制和准备阶段。 同时在协调者和参与者引入超时机制。...最终一致性: 事务在操作过程可能会由于同步延迟等问题导致不一致,但最终状态下,数据都是一致

43920

基于可靠消息方案分布式事务(二):Java事务

常见容器事务Spring事务,容器事务主要是J2EE应用服务器提供,容器事务大多是基于JTA完成,这是一个基于JNDI,相当复杂API实现。...首先介绍J2EE开发两个事务:JDBC事务JTA事务。 JDBC 事务 JDBC一切行为包括事务是基于一个Connection,在JDBC是通过Connection对象进行事务管理。...JTA 事务 通常,JDBC事务就可以解决数据一致性等问题,鉴于他用法相对简单,所以很多人关于Java事务只知道有JDBC事务,或者有人知道框架事务(比如Hibernate、Spring)等。...JTA 事务有效屏蔽了底层事务资源,使应用可以以透明方式参入到事务处理;但是与本地事务相比,XA 协议系统开销大,在系统开发过程应慎重考虑是否确实需要分布式事务。...除了数据库,还有JBoss、JMS消息中间件ActiveMQ等很多组件都是遵守XA协议,2PC和3PC也是符合XA规范。具体JTA更多内容,本文不再展开,后面有机会专门深入介绍JTA事务

1.2K60

工作流容器化依赖注入!Activiti集成CDI实现工作流可配置型和可扩展型

: activitiJtaProcessEngineConfiguration子类,用于在activiti使用JTA管理事务环境 org.activiti.cdi.CdiStandaloneProcessEngineConfiguration...: activitiStandaloneProcessEngineConfiguration子类,用于在activiti使用简单JDBC事务环境 JBoss7下activiti.cfg.xml:...BPMN业务流程通常是一个长时间运行操作,包含了用户和系统任务操作 运行过程,流程会分成多个单独工作单元,由用户和应用逻辑执行 在activiti-cdi,流程实例可以分配到cdi环境,关联展现成一个工作单元...,注解方法代码和启动流程实例会在同一个事务执行 ....CDI事务性监听器可以控制监听器什么时候处理事件: 可以保证监听器只在事件事务成功之后才处理 public void onShipmentSuceeded(@Observes(during=TransactionPhase.AFTER_SUCCESS

1K20

J2EE规范总结

因为jboss,weblogic。websphere自身带有J2EEAPI,所以能够不使用sunJ2EE实现。   在企业级应用,都有一些通用企业需求模块,如数据库连接,邮件服务,事务处理等。...10、JTA(JavaTransaction API):Java事务API 定义了一种标准API,应用程序由此可以访问各种事务监控。...它允许应用程序执行分布式事务处理--在两个或多个网络计算机资源上访问并且更新数据。JTA和JTS为J2EE 平台提供了分布式事务服务。   ...JTA事务比JDBC事务更强大,一个JTA事务可以有多个参与者,而一个JDBC事务则被限定在一个单一数据库连接。 Java 事务API 可以横跨包含:EJB訪问、JDBC连接以及JMS连接。...JTS指定了一个事务管理器实现(Transaction Manager),这个管理器在一个高级别上支持JTA规范,并且在一个低级别上实现了OMGOTS规范Java映射。

3.1K51

顶级 top 分布式事务方案选择

image.png JTA JTA只是Java实现XA事务一个规范,全称Java``事务规范JTA(Java Transaction API) ,我们日常使用@Transactional。...实际上,JTA是基于XA架构上建模,对于Spring来说,可以使用JBoss之类应用服务器提供JTA事务管理器;可以以使用Atomikos、Bitronix等库提供JTA事务管理器。...如果你要操作别人服务库,你必须是通过调用别的服务接口 来实现,绝对不允许交叉访问别人数据库。 问题 同步阻塞问题 :二阶段提交算法在执行过程,所有参与节点都是事务阻塞型。...为了解决两阶段提交同步阻塞和数据不一致问题,三阶段提交引入了超时机制和准备阶段 。 同时在协调者和参与者引入超时机制。...最终一致性:事务在操作过程可能会由于同步延迟等问题导致不一致,但最终状态下,数据都是一致

60630
领券