- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第六讲JTA和Web应用程序
第六讲 JTA和Web应用程序 湖南文理学院计算机学院 王蓉 内容回顾 WebLogic Server下的JDBC开发实例 JDBC高级话题 批量更新 PreparedStatement 结果集 本讲教学 教学目标: 6.1 JTA 6.2 Web应用程序 教学重点: JTA接口;Web应用程序的结构 教学难点: Web应用程序的结构 6.1 JTA:事务处理 事务 事务的概念是一个重要的编程范例,其目的在于简化既要求可靠性又要求可用性的应用程序结构,特别是那些需要同时访问共享数据的应用程序。 事务概念最早用于商务运行的应用程序中,用于保护集中式数据库中的数据;现在扩展到分布式计算环境。 6.1.1 事务特性(ACID) 原子性(Atomicity) 整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。 一致性(Consistency) 在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。 6.1.2 事务特性(ACID) 隔离性(Isolation) 两个事务的执行是互不干扰的,一个事务不可能看到其他事务运行时,中间某一时刻的数据。 持久性(Durability) 在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。 6.1.3 事务处理方式 JDBC事务 JDBC事务只能支持一个数据库(单数据源) JDBC事务,一般由数据库本身来执行提交或回滚操作(单阶段提交)。所有数据库都有它自己的事务管理器,这些管理器只能处理其自身的事务(称为本地事务)。 JTA事务 JTA可以支持分布式的事务(多数据源)。 JTA要支持多个数据源,站在更高的角度上,提供一个“事务处理监视器(TPM)”来管理和协调这些数据源之间的事务操作。它必需执行两阶段提交(2PC)协议。 6.1.3 事务处理方式 在JDBC 的数据库操作中,一项事务是由一条或是多条表达式组成的一个不可分割的工作单元。 提交commit ( )一个事务会使其所有的更改永久不变 回滚rolling back ( )一个事务撤销其所有的更改 该方法位于接口java.sql.Connection中。 JDBC中,事务操作默认是自动提交,即一条对数据库的更新表达式代表一顶事务操作。 禁止自动提交 JDBC中,通知setAutoCommit(false)禁止自动提交,即把多个数据库操作的表达式作为一个事务,在操作完成后调用commit()提交。 表达式操作失败,将产生响应异常,在异常捕获时调用rollback()。 可以操持多次更新操作后相左关数据的一致性。 6.1.3 事务处理方式 两阶段提交(2PC)协议 准备阶段 – TPM向所有RM(资源管理器,即数据库)确认状态,是否可以提交或回滚 提交阶段 – TPM确认提交之后,向所有RM发出提交指令(或回滚) TPM本身会维护事务日志,以保证持久性(灾难恢复等) 6.1.4 JTA JTA(Java Transaction API)是一种高层的、与实现无关、与协议无关的API,应用程序和应用服务器可以使用JTA访问事务 JTA包括三个部分 高层应用事务界定接口(供事务客户使用) 高层的事务管理器接口(供应用服务器使用) X/Open XA协议(供事务性资源管理器接口) 6.1.4 JTA 6.1.4 JTA JTA主要接口 UserTransaction接口 javax.transaction.UserTransaction接口使用应用能够编程控制事务边界(即什么时候开始、挂起、重新开始、提交或回滚)。这个接口可以由Java客户端程序和EJB来使用。 Java客户端程序首先通过JNDI来获得UserTransaction对象的引用,然后使用该对象的方法完成事务。 EJB的事务管理有两种类型,在以后介绍。 6.1.4 JTA java.util.Properties env=… Context ctx =new InitialContext(env); Javax.transaction.UserTransaction userTran =(javax.transaction UserTransaction) ctx.lookup(javax.transaction.UserTransaction); try { userTran.begin(); //JDBC Operation userTmit(); } catch (E
原创力文档


文档评论(0)