简介
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>>。
如下图所示,可绘制从包含的组件到组件打包的模块的 <<realization>> 依赖关系,在图形上显示将组件(例如 EJB 或 Servlet)组装为 J2EE 模块。还可绘制
<<JARInclude>> 依赖关系来显示归档文件中包含整个 Java 包。
另一选项是将归档文件表示为包,且显示包中包含的组件,如下图所示。
除了对在归档中打包的组件建模之外,您还可对组件的属性(最终记录在归档文件的部署描述符中)建模。
下面提供了如何对某些 EJB 组件属性建模的示例。
上图显示了将三个 EJB(BankEJB、LoanEJB、CustomerEJB)和 LoanManagerEJB 组装为同一模块 EJBJARArchive1。请注意对 EJB
方法属性、安全角色和事务的建模。在该示例中,CustomerEJB 按照 CustomerTrans
指定的事务类型(例如,“Required”)运行。源代码使用角色名称“用户”,该名称映射到部署描述符中的“客户”用户角色。并且,LoanEJB 和 CustomerEJB
中的所有方法均使用“客户”的凭证来执行,即使调用的用户属于不同的角色也如此。类似地,LoanManagerEJB 方法以“管理员”身份执行。最终,BankEJB 中的用户无法访问任何方法。
下面提供如何对某些 Web 组件属性建模的示例。
上图显示了将 servlet 组装到 Web 模块中。注意,对于安全角色和约束的建模,“客户”类用户将在 WebSecurityContraint1 属性定义的安全约束的限制下,在“显示结果”Servlet 中以“客户”身份运行方法。
可在部署模型中显示将 J2EE 模块部署到节点。关于对从模块到部署节点的映射建模的进一步讨论,请参阅 指南:描述 J2EE 应用程序的分发。
部署描述符
每个 J2EE 模块都包含 J2EE 标准部署描述符,以及零个或多个特定于供应商的描述符。 概念:J2EE 概述中描述了不同种类的部署描述符。一般来说,标准 J2EE
部署描述符主要记录设计和实施决策。特定于供应商的部署描述符将记录关于 RUP 称为“部署决策”的决策,例如组件在哪些节点上执行,以及如何为特定节点配置组件。
部署描述符有两种单独用途:
-
向容器传达设计决策的途径。例如,会话 EJB 的部署描述符具有“会话类型”,说明会话 EJB 是有状态还是无状态的。这必须与设计和代码一致 - 不能仅在部署描述符中对此作出更改。
-
在不重新编码的情况下定制行为的途径。例如,可使用部署描述符来定义授权哪些角色调用特定方法。可在不更改 EJB 代码的情况下对此作出更改。
部署描述符的内容是在创建 J2EE 模块和将其组装到 J2EE 应用程序中时设置的。关于组装 J2EE 模块的更多信息,请参阅指南:组装 J2EE 模块。 关于组装 J2EE 应用程序的更多信息,请参阅指南:组装 J2EE 应用程序。
|