事务策略: 客户端编排策略-了解如何实现可靠的基于客户端的事务策略 - 编程入门网
事务策略: 客户端编排策略-了解如何实现可靠的基于客户端的事务策略时间:2011-10-21 IBM Mark Richards简介:有时,应用程序的表示层必须处理多个 API 层方法调用之间的协调,以完成单个事务工作单元 。在本文中, 事务策略 系列作者 Mark Richards 将讨论客户端编排(Client Orchestration)事务策 略,并阐述如何在 Java™ 平台中实现它。 如果您一直在阅读本系列,那么应该知道现在需要一个有效且可靠的事务策略来确保数据的高度一致 性和高度完整性,而与您所使用的语言、环境、框架和平台无关。在本文中,我将讨论客户端编排事务策 略,而我之前在 “模型和策略概述” 一文中简要介绍了这方面的内容。我的建议仍然是,在应用程序的 客户端层必须向 API 层发起一个或多个调用才能完成单个事务工作单元时使用此策略。我将在我的代码 示例中使用 EJB 3.0 规范;其概念对于 Spring Framework 和 Java Open Transaction Manager (JOTM) 是相同的。 有时,应用程序是使用细粒度的 API 层编写的,这需要客户端向 API 层发起多个调用才能实现单个 逻辑工作单元(LUW)。这可能是因为复杂和多样的客户端请求不能使用粗粒度的 API 模型进行聚合,或 者仅仅是由较差的应用程序设计造成的。无论何种原因,当来自客户端的多个 API 层方法调用超过一个 合理的范围来重构为单个 API 层调用时,则应该摒弃较为简单的 API 层策略 并采用客户端编排事务策 略。 基本结构 在 “API 层策略” 中,我概述了构建事务策略的两条黄金法则: 开始事务的方法被指定为事务所有者。 只有事务所有者才能回滚事务。 我再次提到了这些规则,因为它们同样适用于客户端编排事务策略。无论开始事务的方法身处何处, 事务所有者都是管理事务和执行提交或回滚的惟一方法,这一点非常重要。 图 1 展示了一个适用于大多数 Java 应用程序的典型逻辑应用层栈: 图 1. 体系结构层次和事务逻辑 图 1 中的体系结构实现了客户端编排事务策略。包含事务逻辑的类显示为红色阴影。注意,在此策略 中,客户端层和 API 层包含事务逻辑。客户端层控制事务作用域。事务从此处开始、提交和回滚。API 层方法包含一些事务指令,它们指示事务管理程序整合和使用由客户端层开始的事务作用域。业务层和持 久层不包含事务逻辑,这意味着这些层不会开始、提交或回滚事务,它们也不包含事务注释,比如说 EJB 3.0 中的 @TransactionAttribute。 不要受限于图 1 显示的 4 个层次。您的应用程序体系结构可以拥有更多或更少的层次。您可以将表 示层和域层结合在一个 WAR 文件中,或者您的域类可以包含在一个单独的 EAR 文件中。您可以让业务逻 辑包含在域类中,并将它们结合为一个层次。这不会对事务策略的运行以及实现造成影响。 事务策略: 客户端编排策略-了解如何实现可靠的基于客户端的事务策略(2)时间:2011-10-21 IBM Mark Richards这种事务策略非常适合拥有复杂和细粒度 API 层的应用程序。这些应用程序 — 通常称作 chatty — 需要一些对 API 的调用以实现单个 LUW。客户端编排事务策略并没有 API Layer 事务策略那样的单 API 层调用限制:您可以从客户端层向 API 层发起一个调用,或者针对每个 LUW 发起一个调用。但是,从应 用程序体系结构的角度来说,这种事务策略的限制大于其他事务策略,因为客户端层必须能够开始一个事 务并将它传播给 API 层。这意味着您不能使用 Java Message Service (JMS) 消息传递客户端、Web 服 务客户端或者非 Java 客户端。此外,客户端层和 API 层之间的通信协议(如果有)必须支持事务的传 播(举例来说,通过 Internet Inter-Orb Protocol [RMI-IIOP] 传输 RMI;参见 参考资料 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |