OTS中的要害部件 为了更好地理解OTS如何工作,我们需要先看看其要害部件。以下的部件可以直接地映射到EJB,而理解这些部件如何在OTS中工作能使我们更好地理解EJB中的事务。 ·Control ·terminator ·Coordinator ·Resource ·Synchronization 下图示出了这些对象中定义的重要方法,以及在事务体系中这些对象的作用。 虚线框内是一个事务。事务中所有的对象都参与了这个事务,提交和回滚对所有的Resource对象都适用。 Control对象代表一个事务。从该对象我们可以得到Coordinator和Terminator 。EJB开发者不会看到Control对象,容器代表bean用Control对象来治理事务。 当一个bean方法返回且该方法在部署描述符中声明在方法返回前需提交该事务时,容器也用Terminator来提交或回滚事务。提交或回滚事务时,所有事务中的对象都会相应的提交或回滚。 Resource是包含事务状态的对象。例如,它可能是一个数据库连接。在这个对象上调用commit()会更新数据库。一个rollback()调用会恢复该事务开始时通过这个连接对数据作的任何改变。完成提交或回滚后,数据库中相应的记录就会解锁。应用的锁级别会在部署描述符中指定。这个对象的完全的方法集会显示这些对象实现了两段提交协议,使得每一个对象都有权决定整个事务是提交还是回滚。当一个事务完成时,不论是提交还是回滚,都要通知Synchronization对象。与Resource不同,它并不参与两段提交协议,所以无权表决一个事务应该提交还是回滚。在事务中它扮演一个被动的角色。 Coordinator是使这一切工作起作用的对象。Resource和Synchronization通过该对象注册到事务中。Bean不直接访问这个对象。 Transaction-aware objects that are intended for use with EJB will transparently oBTain a reference to the current transaction's Coordinator to register itself.