指南:J2EE 模块
主题
简介
J2EE 模块是 J2EE 应用程序中最小的独立部署单元。如概念:J2EE 概述中所述,有不同种类的 J2EE 模块。
J2EE 模块的数目和大小影响着部署和测试 J2EE 应用程序的难易程度,并影响着组件对其它应用程序的重用性程度以及系统对其它部署配置的适用性程度。
关于组装 J2EE 模块的信息,请参阅指南:组装 J2EE 模块。
关于部署 J2EE 模块的信息,请参阅指南:部署 J2EE 模块和应用程序。
确定 J2EE 模块
J2EE 模块是在集成过程中创建的,但它们反映的是在实施(和实际设计)中做出的决策。J2EE 模块通常用于打包实施子系统,实施子系统通常映射到工件:设计子系统。
J2EE 模块应包含紧密相关的 EJB 以及仅由这些 EJB 使用的助手类。通常,这样的关系是在设计中确定的,且这些类将组织为设计子系统。设计子系统的确定应已经考虑到多个部署配置的重用、替代和支持问题。但当将模块分配到特定节点进行部署时,设计中的缺陷可能会变得明显,且可能需要更改设计子系统(和/或实施子系统)。
确定 J2EE 模块包含以单个容器为目标的组件。将 Web 组件打包到 Web 模块,EJB 组件打包到 EJB 模块,应用程序客户机组件打包到应用程序客户机模块。
应将多个模块所使用的常规 Java 类打包到单独的 J2EE 模块中。得出的 JAR 文件将出现在需要这些文件的模块的类路径引用中(或是在这样的类路径引用的传递包中)。
概括地说,确定 J2EE 模块时,除非子系统包含要部署到不同容器的部件,否则首先为每个实施子系统确定一个模块,然后为每个容器定义单独的模块。
对 J2EE 模块建模
J2EE 模块在实施模型中表示为 UML 工件,其构造型确定了其类型:<<EJB-JAR>>、<<JAR>> 或 <<WAR>>。
如下图所示,可绘制从包含的组件到组件打包的模块的 <<实现>> 依赖关系,在图形上显示将组件(例如 EJB 或 Servlet)组装为 J2EE 模块。还可绘制 <<JARInclude>> 依赖关系来显示归档文件中包含整个 Java 包。

另一选项是将归档文件表示为包,且显示包中包含的组件,如下图所示。

除了对在归档中打包的组件建模之外,您还可对组件的属性(最终记录在归档文件的部署描述符中)建模。
下面提供了如何对某些 EJB 组件属性建模的示例。

上图显示了将三个 EJB(BankEJB、LoanEJB、CustomerEJB)和 LoanManagerEJB 汇编为同一模块 EJBJARArchive1。请注意对 EJB 方法属性、安全角色和事务的建模。在该示例中,CustomerEJB 按照 CustomerTrans 指定的事务类型(例如,“Required”)运行。源代码使用角色名称“用户”,该名称映射到部署描述符中的“客户”用户角色。此外,即使调用的用户属于不同的角色,LoanEJB
和 CustomerEJB 中的所有方法均使用“客户的”凭证来执行。类似地,LoanManagerEJB 方法以“管理员”身份执行。最终,BankEJB 中的用户无法访问任何方法。
下面提供如何对某些 Web 组件属性建模的示例。

上图显示了将 servlet 汇编到 Web 模块中。注意,对于安全角色和约束的建模,“客户”类用户将在 WebSecurityContraint1 属性定义的安全约束的限制下,在 showresults Servlet 中自行运行方法。
可在部署模型中显示将 J2EE 模块部署到节点。关于对从模块到部署节点的映射建模的进一步讨论,请参阅指南:描述 J2EE 应用程序的分发。
部署描述符
每个 J2EE 模块都包含 J2EE 标准部署描述符,以及零个或多个特定于供应商的描述符。概念:J2EE 概述中描述了不同种类的部署描述符。一般来说,标准 J2EE 部署描述符主要记录设计和实施决策。特定于供应商的部署描述符将记录关于 RUP 称为“部署决策”的决策,例如组件在哪个节点上执行以及如何为特定节点配置组件。
部署描述符有两种单独用途:
- 向容器传达设计决策的途径。例如,会话 EJB 的部署描述符具有“会话类型”,说明会话 EJB 是有状态还是无状态的。这必须与设计和代码一致 - 不能仅在部署描述符中对此作出更改。
- 在不重新编码的情况下定制行为的途径。例如,可使用部署描述符来定义授权哪些角色调用特定方法。可在不更改 EJB 代码的情况下对此作出更改。
部署描述符的内容是在创建 J2EE 模块和将其汇编到 J2EE 应用程序中时设置的。关于组装 J2EE 模块的更多信息,请参阅指南:组装 J2EE 模块。关于汇编 J2EE 应用程序的更多信息,请参阅指南:汇编 J2EE 应用程序。
|