
J2EE平台包含了一个针对分布组件模型的规范,这个模型叫做企业JavaBeans(EJB)。如果你已经利用Java工作了一段时间,你就可能对EJB及其同事务逻辑之间的关系有一些基本的了解。在本文中,我们会更加深入地看探讨,如何在同其他资源进行交互操作的同时使用EJB来封装事务逻辑。关于如何使用EJB创建事务逻辑组件的一些背景知识,可以参看我先前的
文章。你可以在
这里下载到本文所涉及的示例代码。
层的范围
我们对中间件概念的探讨要从包含有一个客户层和三个服务器层的结构开始。这三个服务器层是下面这些:
- 表示层——负责接收客户请求,把这些请求分发给事务逻辑组件,然后把回应进行格式化,以便传送回客户端。
- 事务层——负责接受来自表示层的服务请求,访问数据资源以及其他企业系统,再将结果数据返回给表示层。
- 数据层——数据资源和外部企业系统的访问点。
我们把JavaBeans用作数据对象使用,这样就能在服务器层之间传递数据。图A说明了这些概念和组件。
图A

组件模型和EJB
软件组件有一些很显著的特点:
- 自主性——软件组件应该能够不依赖于其他组件或者应用程序而独立工作。
- 动态可发现性——尽管一个软件组件在桌面环境下可能不需要被动态发现,但是在分布系统的环境下,最好具有这个特性。
- 事务进程——软件组件应该能够逻辑事务的进程。
- 包含对外公开的接口——软件组件应该公开一个或者多个接口,用于向外提供对这个组件功能的访问。
- 能够用于创建其他的组件或者应用程序——软件组件的主要任务是让开发人员能够把一个或多个组件同自定义的应用程序或者系统代码结合起来,从而创建其他的组件或者应用程序。
为了说明组件可以如何被用来创建一个更加复杂的实体,我们可以把软件的组件比作汽车的零部件,汽车的每个零部件(组件)都有其专用的作用(进程)。只要零部件的位置准确且电缆连接正确(接口),它就能够被作为整车(其他组件或者应用程序)的一个组成部分。