指南:
|
会话 | 消息驱动 | 实体 | |
---|---|---|---|
角色 |
实施特定于客户机的业务逻辑 |
实施特定于消息处理的业务逻辑 |
实施特定于业务实体的业务逻辑 |
访问方法 |
单个客户机,通过本地或远程接口 |
容器,通过 JMS MessageListener 接口;无法通过客户机直接访问 |
多个客户机,同时通过本地和远程接口 |
状态 |
可维护客户机和容器之间的临时会话状态 |
无状态,但可维护实例中资源的句柄 |
持久状态保存到数据库中 |
将 EJB 作为一组构造型的类建模。具体地,为 Bean 类和任何 EJB 接口类。基于指南:J2EE 应用程序的接口中讨论的理由,将 EJB 接口作为构造型的类(而非 UML 接口)建模。
将 Bean 类和 EJB 接口之间的关系作为 Bean 类到接口的依赖关系建模,而不作为实现关系。Java 实施构造通常表现为接口和类之间的实现。但是,EJB 类并不实施其接口类,因此依赖关系更为合适。下图显示了一个示例。关于该特定示例的更多信息,请参阅指南:设计 J2EE 应用程序的子系统。
示例 EJB 和助手类
以下是适用于对 EJB 建模的 UML 构造型。
构造型 | 适用于 | 定义 |
---|---|---|
<<EJBSessionHomeInterface>> |
类 | 分别表示会话或实体主接口。 |
<<EJBRemoteInterface>> | 类 | 表示 EJB 远程接口。 |
<<EJBLocalInterface>> | 类 | 表示 EJB 本地接口。 |
<<EJBSession>> | 类 | 表示 EJB 会话 Bean 类。 |
<<EJBEntity>> | 类 | 表示 EJB 实体 Bean 类。 |
<<EJBMessageDriven>> | 类 | 表示该类为消息驱动的 Bean。 |
通常在子系统中对某一 EJB 以及紧密相关的类和 EJB 进行分组。这允许设计人员提供独立于 EJB 实施的 EJB 规范视图,并与其它设计元素组织起来,提供更高程度的抽象。关于某些附加的详细信息,请参阅指南:设计 J2EE 应用程序的子系统。
关于代表 EJB 构造的构造型的完整列表,另请参阅 UML/EJB 映射规范(RSC01)。
对消息驱动的 Bean 预订的主题或队列的依附对象建模。关于对 J2EE 应用程序中并行元素建模的更多指导信息,请参阅指南:描述 J2EE 应用程序的运行时体系结构。
可将机制的使用(例如容器管理的持久性、事务、权限等)作为 Bean 类的附加属性进行建模,或仅将其包括在与 Bean 类相关联的文本描述中。
使用序列图考虑使用这些机制的场景。
交互图(协作和序列图)可用于显示 EJB 的动态行为以及非 EJB(包括 Web 组件和外部客户机应用程序)与 EJB 的交互。
这些交互图在本质上与活动:用例设计中描述的交互图相同。通过仅与 EJB 接口进行交互,可显示交互,并将 Bean 显示为黑盒。交互还可通过显示 EJB 接口和 Bean 实施类之间的交互来显示 Bean 实施。注意,容器的干预交互通常不显示。
消息驱动的 Bean 将消耗从其它来源异步到达的消息。您可选择直接显示从生产者到消费者的异步消息流向,或可通过对主题和队列建模来对关系更精确地建模。
图 2 中显示的序列图示例展示了客户机类与 EJB 接口的交互。
图 2:客户机类与 EJB 接口的交互
图 3 是与图 2 类似的序列图,但它显示了与 Bean 实施的交互。
图 3:与 EJB 实施交互的示例
还可将 EJB(Bean 实施类与 EJB 接口的组合)作为子系统或组件进行建模。
某些设计人员还可选择将 EJB 作为类建模,并对操作加以构造,以表示该操作属于“本地”接口、“远程”接口还是“主”接口。这将提供比其它备选方案更简洁的表示法。
Rational Unified Process
|