权衡Apache Geronimo EJB事务选项,第3部分: 综合所有事务 - 编程入门网
权衡Apache Geronimo EJB事务选项,第3部分: 综合所有事务时间:2011-03-13 IBM Jonathan SagorinJonathan Sagorin 在 由三部分组成的系列文章 的最后一部分中对 Enterprise Java™Beans(EJB)事务进行了全面的揭示。探索 Apache Geronimo 应用服务器上与容器管理事务和 bean 管理事务都相关的难题和附加实现与配置选项。 简介 在本系列的 第 1 部分 和 第 2 部分 中,您简单了解了 bean 管理的和容器管理的 EJB 事务以及如何在 Geronimo 应用服务器上实现它们。那么接下来呢?在使用 EJB 事务时,您应考虑哪些其他事务设置是可用的,以及需要考虑的其他事项? 本文首先概述第 1 和第 2 部分中的事务选择:容器管理或 bean 管理的事务。接着将了解并发控制策略和方法,确保事务执行时没有数据损失。您还将了解隔离级别(如何控制事务与其他事务的隔离)并了解如何设置事务超时。最后,您将了解赞成和反对使用分布式事务的理由。 EJB 事务:我的选择是什么? 在实现 EJB 事务时,有两种选择:容器管理或 bean 管理的事务。 使用容器管理的事务时,将在部署描述符中指定事务行为。EJB 容器负责控制事务边界。您为整个 enterprise bean、bean 上的个别方法或两者指定事务属性。事务属性的选择有: Required RequiresNew Supports Mandatory NotSupported Never 使用 bean 管理的事务时,您编程控制事务边界并决定事务开始、提交和回滚的时机。在 bean 管理的事务中,可以在 Java Transaction API(JTA)或 Java Database Connectivity(JDBC)事务实现之间进行选择。JTA 使用 javax.transaction.UserTransaction 接口控制事务,而 JDBC 事务则直接经 java.sql.Connection 接口执行操作来控制事务行为。 如果使用会话或消息驱动 bean(MDB),那么可以实现 bean 管理或容器管理事务。然而,实体 bean 只可以使用容器管理事务。 表 1 按每个 enterprise bean 实现的事务类型总结了这些选择。 表 1. enteprise bean 的事务类型选择
如果不确定您的 bean 使用哪种事务类型,Sun Microsystems 建议对 enterprise bean 使用具有 required 属性的容器管理的事务。 对于开发人员,使用容器管理的事务会比较简单并且需更比较少的工作量。在 bean 方法中不要求事务逻辑。在 enterprise bean 的方法级别上划分事务边界。bean 方法必须运行在事务上下文中或不在其中运行。 如果要求对事务边界进行更严格的控制,那么使用 bean 管理的事务。如果期望在 enterprise bean 中拥有长期过程,那么使用 bean 管理的事务。对于本文的目的,希望事务运行尽可能短的时间。如果使用容器管理事务,划分边界的粒度不够细,它们处于 bean 方法级别。 通过使用 bean 管理的事务,可以限制事务的持续时间为短暂的。可以在事务中隔离数据库操作并允许长期过程在事务作用域之外运行。这将确保不会阻塞访问同一数据的其他任何事务。 权衡Apache Geronimo EJB事务选项,第3部分: 综合所有事务(2)时间:2011-03-13 IBM Jonathan Sagorin并发控制策略 使用 EJB 实现并发控制有两种策略:可以遵循消极(pessimistic)或积极(optimistic)锁定策略。 使用消极锁定 时,在修改数据所需的事务持续时间内获取锁,从而阻塞其他任何人修改同一数据。如果系统中有其他人可能试图修改正在处理的数据,那么这是使用该策略的好机会。 |
||||||||||||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |