JTA Java 事务API(JTA;Java Transaction API)和它的同胞Java 事务服务(JTS;Java Transaction Service),为J2EE 平台提供了分布式事务服务。一个分布式事务(distributed transaction)包括一个事务管理器(transaction manager)和一个或多个资源管理器(resource manager)。一个资源管理器(resource manager)是任意类型的持久化数据存储。事务管理器(transaction manager)承担着所有事务参与单元者的相互通讯的责任。 JTA 事务比 JDBC 事务更强大。一个 JTA 事务可以有多个参与者,而一个 JDBC 事务则被限定在一个单一的数据库连接。下列任一个 Java 平台的组件都可以参与到一个 JTA 事务中: .JDBC 连接 .JDO PersistenceManager 对象 .JMS 队列 .JMS 主题 .企业 JavaBeans(EJB) .一个用 J2EE Connector Architecture 规范编译的资源分配器。 使用 JTA 的事务划分:要用 JTA 来划分一个事务,应用程序调用 javax.transaction.UserTransaction 接口中的方法。示例 4 显示了一个典型的JNDI 搜索的UseTransaction 对象。 import javax.transaction.*; import javax.naming.*; InitialContext ctx = new InitialContext(); Object txObj = ctx.lookup(";java:comp/UserTransaction";); UserTransaction utx = (UserTransaction) txObj; 应用程序有了UserTransaction 对象的引用之后,就可以象示例 5 那样来起动事务。 utx.begin(); // ... DataSource ds = obtainXADataSource(); Connection conn = ds.getConnection(); pstmt = conn.prepareStatement(";UPDATE MOVIES ...";); pstmt.setString(1, ";Spinal Tap";); pstmt.executeUpdate(); // ... utx.commit(); // ... 当应用程序调用 commit()时,事务管理器使用两段提交协议来结束事务。JTA 事务控制的方法: .javax.transaction.UserTransaction 接口提供了下列事务控制方法: .public void begin() .public void commit() .public void rollback() .public void getStatus() .public void setRollbackOnly() .public void setTransactionTimeout(int) 应用程序调用 begin()来起动事务,即可调用 commit()也可以调用 rollback()来结束事务。 使用 JTA 和 JDBC 开发人员经常使用 JDBC 来作为 DAO 类中的底层数据操作。如果计划...