java是怎样处理事务的? 我想CMP和SessionBean内核使用的应该是JTA,只有JTA才支持分布式事务呀,JDBC的事务是不支持分布式事务的。不知道对不对? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一个事务是有下列属性的一个工作单元: 原子性(ATOMICITY): 一个事务要被完全的无二义性的做完或撤消。在任何操作出现一个错误的情况下,构成事务的所有操作的效果必须被撤消,数据应被回滚到以前的状态。 一致性(CONSISTENCY): 一个事务应该保护所有定义在数据上的不变的属性(例如完整性约束)。在完成了一个成功的事务时,数据应处于一致的状态。换句话说,一个事务应该把系统从一个一致状态转换到另一个一致状态。举个例子,在关系数据库的情况下, 一个一致的事务将保护定义在数据上的所有完整性约束。 隔离性(ISOLATION): 在同一个环境中可能有多个事务并发执行,而每个事务都应表现为独立执行。串行的执行一系列事务的效果应该同于并发的执行它们。这要求两件事: 在一个事务执行过程中,数据的中间的(可能不一致)状态不应该被暴露给所有的其他事务。 两个并发的事务应该不能操作同一项数据。数据库管理系统通常使用锁来实现这个特征。 持久性(DURABILITY): 一个被完成的事务的效果应该是持久的。 这些属性叫做 ACID 属性,担保一个事务是永远不会不完整,数据永远不会不一致,并发事务是独立的,一个事务的效果是持久的。EJB 事务模型EJB 框架不规定特定于任何事务服务(例如 JTS) 或协议的事务管理。但是,规范要求把 JTS 的 javax.transaction.UserTransaction 接口暴露给 enterprise bean。下面的段落讨论的编事务界定要求这个接口。类似于 MTS,EJB 框架提供了事务的声明界定。容器依靠在一个容器中部署一个 enterprise 的时候指定的属性(attribute),来自动完成界定。下列属性确定如何创建一个事务。 不支持: 容器不在一个全局上下文中调用 bean。 要求: 容器在一个全局上下文中调用 bean。如果调用线程已经有一个相关联的事务上下文,容器在同一个事务上下文中调用 bean 。否则,容器建立一个新事务并在这个事务上下文中调用 bean。 支持: bean 是事务就绪的。如果客户在一个事务中调用 bean,bean 也在相同的事务中被调用。否则,不在一个事务上下文中调用 bean。 要求新的: 不管客户是否与一个事务相关联,容器在一个新事务中调用 bean。 强制: 容器必须在一个事务中调用 bean。容器应该在调用任何在 bean 上的方法之前开始一个事务。 事务界定EJB 框架支持三类事务界定。 声明界定: 这也叫容器管理的界定。容器界定代表 bean 界定事务。在一个 EJB 服务器上部署 bean 的时候指定要求的属性。bean 可以用 javax.ejb.EJBContext.setRollbackOnly() 方法来为回滚而标记事务。 Bean 管理的界定: 这类似于客户管理的界定。 客户管理的界定: Java 客户可使用 javax.transaction.UserTransaction 接口来编程的界定事务。 资源征集EJB 自动执行资源征集。EJB 容器在一个 bean 获得一个连接时、自动的把连接应征到 EJB-aware 的资源管理器上。 应用同步EJB 规范为应用同步提供 javax.ejb.SessionSynchronization 接口。当它被一个 bean 所实现,容器为在两阶段提交期间的应用同步而调用 afterBegin, beforeCompletion 和 afterCompletion 方法。 当前有一些厂商提供遵循 EJB 1.0 规范的应用服务器。这样的产品有 BEA Systems Inc. 的 WebLogic, GemStone Systems Inc. 的 GemStone/J, Sun Microsystems Inc. 的 NetDynamics, Oracle Corporation 的 Oracle Application Server, 和 Persistence Software Inc. 的 PowerTier for EJB。 请参阅 EJB Directory 来得到一个 EJB 应用服务器和 EJB-aware 数据库的列表。规范当前正在经历一次较大的彻底检修,遵循新标准的产品有望在1999年底或2000年初推出(译注: 1999年12月17日推出了规范1.1,当前的规范是2.0)。 总的来说,EJB 框架提供了极其类似于 MTS 的特征。两种技术都允许基于构件的事务性分布式应用,并从应用构件中抽象出事务界定的过程。 JDBC、JTA和EJB都是API,是接口,是对不同实现的Java包装。JDBC事务包装的就是数据库的事务,前者是后者的Java体现;JTA包装的是分布式事务,EJB包装是分布式对象事务系统。 OK,我现在想知道的就是:EJB的XML里声明的事务是不是分布式事务,J2EE规范中EJB声明的事务是否一定是JTS事务 “EJB的XML里声明的事务是不是分布式事务”是,对分布事务支持是EJB的强点。“J2EE规范中EJB声明的事务是否一定是JTS事务”不一定,JTS只是一种实现方式。 strtus2如何下载ftp上的文件 求关于数据库图片大对象 关于SQL Server分页的疑惑 大家来讨论一下Hibernate的关联关系什么时候使用合适呢 tomcat报错了,怎么回事呢? 关于struts2的业务数据校验? 学编程不易,有问题就得讨论 请问达人们一个处理数字的问题,多谢 在ejb-ql里如果要判断输入参数是否为空该怎么写? Java 并发 写文件 请问高手一个简单的问题??? 源代码J2EE黄金组合 Tomcat 4.x+JBoss 3.x+MySQL 3.x(MAX)+Eclipse
原子性(ATOMICITY): 一个事务要被完全的无二义性的做完或撤消。在任何操作出现一个错误的情况下,构成事务的所有操作的效果必须被撤消,数据应被回滚到以前的状态。
一致性(CONSISTENCY): 一个事务应该保护所有定义在数据上的不变的属性(例如完整性约束)。在完成了一个成功的事务时,数据应处于一致的状态。换句话说,一个事务应该把系统从一个一致状态转换到另一个一致状态。举个例子,在关系数据库的情况下, 一个一致的事务将保护定义在数据上的所有完整性约束。
隔离性(ISOLATION): 在同一个环境中可能有多个事务并发执行,而每个事务都应表现为独立执行。串行的执行一系列事务的效果应该同于并发的执行它们。这要求两件事:
在一个事务执行过程中,数据的中间的(可能不一致)状态不应该被暴露给所有的其他事务。
两个并发的事务应该不能操作同一项数据。数据库管理系统通常使用锁来实现这个特征。
持久性(DURABILITY): 一个被完成的事务的效果应该是持久的。
这些属性叫做 ACID 属性,担保一个事务是永远不会不完整,数据永远不会不一致,并发事务是独立的,一个事务的效果是持久的。EJB 事务模型
EJB 框架不规定特定于任何事务服务(例如 JTS) 或协议的事务管理。但是,规范要求把 JTS 的 javax.transaction.UserTransaction 接口暴露给 enterprise bean。下面的段落讨论的编事务界定要求这个接口。
类似于 MTS,EJB 框架提供了事务的声明界定。容器依靠在一个容器中部署一个 enterprise 的时候指定的属性(attribute),来自动完成界定。下列属性确定如何创建一个事务。
不支持: 容器不在一个全局上下文中调用 bean。
要求: 容器在一个全局上下文中调用 bean。如果调用线程已经有一个相关联的事务上下文,容器在同一个事务上下文中调用 bean 。否则,容器建立一个新事务并在这个事务上下文中调用 bean。
支持: bean 是事务就绪的。如果客户在一个事务中调用 bean,bean 也在相同的事务中被调用。否则,不在一个事务上下文中调用 bean。
要求新的: 不管客户是否与一个事务相关联,容器在一个新事务中调用 bean。
强制: 容器必须在一个事务中调用 bean。容器应该在调用任何在 bean 上的方法之前开始一个事务。
事务界定
EJB 框架支持三类事务界定。
声明界定: 这也叫容器管理的界定。容器界定代表 bean 界定事务。在一个 EJB 服务器上部署 bean 的时候指定要求的属性。bean 可以用 javax.ejb.EJBContext.setRollbackOnly() 方法来为回滚而标记事务。
Bean 管理的界定: 这类似于客户管理的界定。
客户管理的界定: Java 客户可使用 javax.transaction.UserTransaction 接口来编程的界定事务。
资源征集
EJB 自动执行资源征集。EJB 容器在一个 bean 获得一个连接时、自动的把连接应征到 EJB-aware 的资源管理器上。 应用同步
EJB 规范为应用同步提供 javax.ejb.SessionSynchronization 接口。当它被一个 bean 所实现,容器为在两阶段提交期间的应用同步而调用 afterBegin, beforeCompletion 和 afterCompletion 方法。
当前有一些厂商提供遵循 EJB 1.0 规范的应用服务器。这样的产品有 BEA Systems Inc. 的 WebLogic, GemStone Systems Inc. 的 GemStone/J, Sun Microsystems Inc. 的 NetDynamics, Oracle Corporation 的 Oracle Application Server, 和 Persistence Software Inc. 的 PowerTier for EJB。 请参阅 EJB Directory 来得到一个 EJB 应用服务器和 EJB-aware 数据库的列表。规范当前正在经历一次较大的彻底检修,遵循新标准的产品有望在1999年底或2000年初推出(译注: 1999年12月17日推出了规范1.1,当前的规范是2.0)。
总的来说,EJB 框架提供了极其类似于 MTS 的特征。两种技术都允许基于构件的事务性分布式应用,并从应用构件中抽象出事务界定的过程。