介绍
本指南着重于确定 EJB。指南:Enterprise JavaBean(EJB)中提供关于 EJB 的更多指导信息。
确定 EJB
EJB 通常用于实施服务器端的业务对象,该对象是要求支持事务、安全和远程访问的对象或是操作共享数据的对象(例如更新帐户信息)。
EJB 通常是在从工作产品:分析类确定设计类时确定的。由于会话 Bean 是为提供控制逻辑而准备的,所以控制类是会话 Bean 的良好候选项。由于实体
Bean 是为持久数据而准备的,所以实体类是实体 Bean 的良好候选项。
另请参阅以下更具体的指南:
比较会话 Bean、消息驱动的 Bean 和实体 Bean
该表概括了前述的某些指南,标识了不同 EJB 所扮演的角色,如何访问它们以及其状态的本质。
|
会话
|
消息驱动
|
实体
|
角色
|
实施特定于客户机的业务逻辑
|
实施特定于消息处理的业务逻辑
|
实施特定于业务实体的业务逻辑
|
访问方法
|
单个客户机,通过本地或远程接口
|
容器,通过 JMS MessageListener 接口;无法通过客户机直接访问
|
多个客户机,同时通过本地和远程接口
|
状态
|
可维护客户机和容器之间的临时会话状态
|
无状态,但可维护实例中资源的句柄
|
持久状态保存到数据库中
|
对 EJB 建模
将 EJB 作为一组构造型的类建模。具体地,为 Bean 类和任何 EJB 接口类。基于指南:J2EE 应用程序接口中讨论的理由,将 EJB 接口作为具有构造型的类(而非 UML 接口)建模。
将 Bean 类和 EJB 接口之间的关系作为 Bean 类到接口的依赖关系建模,而不作为实现关系。Java 实施构造通常表现为接口和类之间的实现。但是,EJB
类并不实施其接口类,因此依赖关系更为合适。下图显示了一个示例。关于该特定示例的更多信息,请参阅指南:设计 J2EE 应用程序的子系统。
示例 EJB 和助手类
以下是适用于对 EJB 建模的 UML 构造型。
构造型
|
适用于
|
定义
|
<<EJBSessionHomeInterface>>
<<EJBEntityHomeInterface>>
|
类
|
分别表示会话或实体主接口。
|
<<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 作为类建模,并使操作具有构造型,以表示该操作属于“本地”接口、“远程”接口还是“主”接口。这将提供比其他备选方案更简洁的表示法。
|