`
huobengluantiao8
  • 浏览: 1038826 次
文章分类
社区版块
存档分类
最新评论

EJB分布式事务的一个小问题

 
阅读更多
最近对EJB分布式事务进行了一些接触,在操作过程中遇到一个问题,就是不能完全保证事务的完整性,偶尔会有小几率的失败,通过上网查找,发现国内关于这个问题的资料还是很少,所以现在把它记录下来,以备参考:
遇到警告:
WARN[TxConnectionManager$LocalXAResource] Prepare called on a local tx. Use of local transactions on a jta transaction with more than one branch may result in inconsistent data in some cases of failure.
发生场景:
在JBoss中,用Session Bean进行容器事务管理,若一个事务方法中操作多个数据库,而对这些数据库的数据源配置是local-tx-datasource,就会产生这样的警告(在应用局部/本地事务进行jta事务管理中,若设计多个数据库流程,在某些情况下会产生一致性失败)。
问题及解决:
出现上述失败及警告的原因是配置数据源类型错误,正确的配置是在JBoss中进行分布式的数据源配置,文件为mssql-xa-ds.xml,配置内容如下
<datasources>
<xa-datasource>
<jndi-name>JSQLConnectDB_Test_locale</jndi-name>
<track-connection-by-tx/>
<isSameRM-override-value>false</isSameRM-override-value>
<xa-datasource-class>net.sourceforge.jtds.jdbcx.JtdsDataSource</xa-datasource-class>
<xa-datasource-propertyname="ServerName">192.168.11.185</xa-datasource-property>
<xa-datasource-propertyname="DatabaseName">qinysong</xa-datasource-property>
<user-name>sa</user-name>
<password>123456</password>
</xa-datasource>
<xa-datasource>
<jndi-name>JSQLConnectDB_Test_Remote</jndi-name>
<track-connection-by-tx/>
<isSameRM-override-value>false</isSameRM-override-value>
<xa-datasource-class>net.sourceforge.jtds.jdbcx.JtdsDataSource</xa-datasource-class>
<xa-datasource-propertyname="ServerName">192.168.8.92</xa-datasource-property>
<xa-datasource-propertyname="DatabaseName">qinysong</xa-datasource-property>
<user-name>sa</user-name>
<password>xmission</password>
</xa-datasource>
</datasources>
备注:若EJB事务方法中只是对一个数据源进行多个步骤的操作,而不是对于多个数据源,则用local-tx-datasource进行配置不会产生此问题。
分享到:
评论

相关推荐

    ejb3.0 分布式事务

    关于ejb3.0 分布式事务的demo,涉及到相关persistence.xml 配置以及数据源配置。

    EJB3-JBOSS7-分布式事务示例

    该资源是下面帖子的资料,可以进去看看帖子再下载,这样能防止下的东西没用。。。。 http://blog.csdn.net/qzh3578/article/details/46489747

    基于TCC机制的分布式事务管理器源代码

    ByteTCC是一个基于TCC(Try/Confirm/Cancel)机制的分布式事务管理器。兼容JTA,可以很好的与EJB、Spring等容器(本文档下文说明中将以Spring容器为例)进行集成。

    ByteTCC Transaction Manager旨在提供一个兼容JTA的基于TCC机制的分布式事务管理器

    ByteTCC Transaction Manager旨在提供一个兼容JTA的基于TCC机制的分布式事务管理器。兼容JTA,可以很好的与EJB、Spring等容器(本文档下文说明中将以Spring容器为例)进行集成。

    EJB 3.0从入门到精通

    内容依次包含了Java EE概述、EJB基础、搭建EJB环境、会话bean、持久化实体、持久化实体管理器、对象关系映射、JPQL查询、消息驱动bean、事务、提高EJB 3.0性能、从Web层访问EJB 3和EJB安全、EJB和Web服务及EJB表现层...

    基于 SpringBoot 多数据源 动态数据源 主从分离 快速启动器 支持分布式事务.zip

    Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供...

    达内java软件工程师培训ejb的PPT

    达内 Java 软件工程师培训 EJB 的 PPT 基于提供的 PPT 内容,我们可以总结出以下关键...本 PPT 介绍了 EJB 的基本概念、类型、角色、优点和应用场景,为 Java 软件工程师提供了一个较为全面的 EJB 概念和技术指南。

    EJB技术的体系结构

    EJB的上层的分布式应用程序是基于对象组件模型的,低层的事务服务用了API技术。EJB技术简化了用JAVA语言编写的企业应用系统的开发,配置,和执行。EJB的体系结构的规范由Sun Microsystems公司制定。Inprise的EJB容器...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    第三部分提供了一个jsf+ejb 3+ jpa整合开发的项目:电子拍卖系统。这个项目包括5个实体,这5个实体之间具有复杂的关联关系,而且业务逻辑也相对复杂,希望让读者理论联系实际,真正将jsf+ejb 3+jpa整合真正运用到...

    EJB技术及应用(课件与练习)

     EJB (Enterprise Beans )是基于分布式事务处理的企业级应用程序的组件。 Sun公司发布的文档中对EJB的定义是: EJB是用于开发和部署多层结构的、分布式的、面向对象的Java应用系统的跨平台的构件体系结构。

    ejb的详细介绍

    5. 分布式事务 6. 动态重部署 7. 无损关机(服务器停掉的时候保证没有客户) 8. 登陆和授权 9. 系统管理(当软件有问题时能够及时的维护) 10. 线程 11. 面向消息的中间件(异步的交互方式) 12. 对象的生命周期管理 13. ...

    系统分析员考试复习.doc

    ④ EJB Container是用于管理EJB Object的设备,它负责EJB对象的生命周期的管理,实现EJB对象的安全性,协调分布式事务处理,并负责EJB对象的上下文切换; ⑤ EJB规范提供了这样的一种机制,你可以通过在运行时设置...

    Java EJB JTA JTS用法示例源代码.rar

     J2EE包括了两套规范,用来支持分布式的事务,一种是Java Transaction API(JTA),另一种是Java Transaction Service(JTS)。JTA是一种高层的,与实现无关的,与协议无关的API,应用程序和应用服务器可以使用JTA来...

    EJB3.0 - 学习笔记

    EJB(Enterprice JavaBeans)是一个用于分布式业务应用的标准服务端组建模型.采用EJB架构编写的应用是可伸缩的,事务性的,多用户安全的.采用EJB编写的这些应用,可以部署在任何支持EJB规范的服务器平台,如jboss,weblogic...

    名片管理(EJB3.0)

    使用EJB3.0开发的,支持分布式管理和事务控制,想学EJB3.0的朋友可以下载下来看看,很有帮助

    EJB概述(上) java 数据库操作

    EJB的上层的分布式应用程序是基于对象组件模型的,低层的事务服务用了API技术。EJB技术简化了用JAVA语言编写的企业应用系统的开发,配置,和执行。EJB的体系结构的规范由Sun Microsystems公司制定。Inprise的EJB容器...

    Java编程语言中EJB技术的详细说明

    Enterprise JavaBean (EJB) 1.1 规范定义了开发和部署基于事务性、分布式对象应用程序的服务器端软件组件的体系结构。企业组织可以构建它们自己的组件,或从第三方供应商购买组件。这些服务器端组件称作 Enterprise ...

    几个小小的Java案例

    它之所以复杂是因为EJB是为了解决复杂问题而设计的,如分布式对象和远程事务的问题。 不幸的是,很多企业级项目根本没有这么复杂,却承担了EJB的这种编写多个Java文件和部署文件,运行中量级容器的负担。只要用了...

    深入探究EJB应用技术的体系结构

    EJB的体系结构:EJB的上层的分布式应用程序是基于对象组件模型的,低层的事务服务用了API技术。EJB技术简化了用JAVA语言编写的企业应用系统的开发,配置,和执行。EJB的体系结构的规范由SunMicrosystems公司制定。...

    基于J2EE在分布式环境下的底层结构(外文翻译+文献综述).rar

    J2EE是一个广泛使用的平台,特别适用于构建企业级应用,因为它提供了一套成熟的服务和APIs来简化复杂应用程序的开发。在这个资料包中,我们不仅能够找到详细的外文翻译,这些翻译工作可能涵盖了关键的技术文档、研究...

Global site tag (gtag.js) - Google Analytics