EJB3的事务与安全
EJB3的是事务也符合ACID,即原子性、一致性、隔离型、持久性。这些特性与数据库事务一致,需要强调的是一致性,在事务开始前,系统是处于一种遵守业务规则和约束的一致状态下,那么在事务提交或回滚之后,系统也必须维持这种一致性状态。在事务进行过程中不必处于不一致性状态,事务在这里就像一个沙箱(sand-box)。
在EJB中,事务也具有隔离级别的控制,但一般不用通过EJB容器来控制,而是在数据库资源这一级别来进行控制。
要知道在EJB容器中,代码层面的所有操作最终都是转化为两级的数据库操作,比如锁定和解锁数据库中的某行或某张表。事务日志来反映事务的变化,开始事务日志代表事务的开始,应用日志代表以提交该事务来结束,相反放弃日志就代表回滚事务而结束。
资源管理器(Resource Manager)的概念是管理特定某种资源的事务的组件。这个概念不仅包括关系数据库系统,也可以使消息服务器或其他业务系统。
如果只涉及一种单一资源的事务就称为local transaction本地事务,相反大多数企业应用都是需要涉及多种不同的资源。这时候就需要一种类型的组件来管理事务中多种资源,这个组件称为事务管理器(Transaction Manager),它在多个管理各自资源事务的资源管理之间进行协调和控制。
分布式的事务管理是通过一种称为两段式提交(two-phase commit)的机制来完成。现在最为流行的分布式事务协议是XA协议(XA Protocol),JavaEE就是通过该协议来完成分布式应用中的事务管理。
事务管理
JavaEE中事务使用JTA(