J2EE Architecture(18)
1、J2EE专用设计模式
基于层来划分J2EE设计模式比较恰当。
具体的讲,基于关键层的设计模式有以下几种:
1)表示层设计模式
表示层设计模式主要用于管理企业应用程序的更改,提高程序的灵活性。
表示层企业应用程序的绝大多数更改由业务变化而引起,表示层的设计模式有助于提升企业应用程序的质量。
表示层包含5种重要模式,如下:
(1)Front Controller 前端控制器
前端控制器提供了一种管理用户请求的机制,结果得到不同的用户请求数据“视图”。这是首先截获用户请求的组件。
(2)View Helper 视图帮助者
它有助于检索特定“视图”以及构造这视图的逻辑。
(3)Composite View 复合视图
它定义了如何利用多个不同子视图构建更大的视图。
(4)Dispatcher View 调度者视图
它是两个模式结合的产物。由“前端控制器”和“视图帮助者”设计模式结合而成。
“前端控制器”负责管理用户请求,“视图帮助者”负责构建视图。
也可将这种设计模式扩展到业务层。
(5)Service to Worker 工作者服务
它与“调度者视图”设计模式极为相似,差别仅在于其中的“前端控制器”模式的任务更重。
“工作者服务”可以使用业务层的“业务委托”模式。
2)业务层设计模式
3)集成层设计模式
2、业务层
业务层为应用程序提供了“业务逻辑”和“数据访问逻辑”支持。
业务组件和业务对象部署在业务服务器,业务服务器常称“应用服务器”,为业务组件提供各种“校准”服务,如事务、命名和目录等。
EJB是运行在业务层的业务组件。它在本质上具有分布特点,面向事务,能为企业应用程序提供业务逻辑支持。
一般通过表示层组件访问EJB。
3、业务层的作用
业务逻辑被写入EJB及业务层部署的其它业务对象。这些EJB和业务对象能在分布和事务环境中执行各种操作,如插入、更新和删除。
访问在应用服务器部署的业务组件的客户端由两种类型。
4、业务容器
也即EJB容器。它为企业应用程序提供了可移植性,有助于实现可重用性,简化使用。
EJB容器用于:
(1)创建和管理业务组件,管理Bean、DAO(Data Access Object,数据访问对象)、VO(Value Object,值对象)和JavaBean等服务器端组件的生命期;
(2)管理相关类的实例;
(3)还提供对企业功能和流程至关重要的服务。
服务有:持久服务、事务服务、安全服务、企业Bean实例标识
5、业务组件
又称“业务层组件”,包含以下功能:
1)业务逻辑
2)数据
3)数据访问逻辑
这些组件具有可扩展、安全、分布式和面向事务的特点。
有3种业务层组件影响业务层的功能和非功能因素:
1)会话Bean
有助于为客户事务创建会话。
当用户转发请求以执行特殊业务任务时,将创建会话Bean;
当完成任务后,用户退出事务,容器销毁会话Bean。
这些企业Bean有权访问包括数据库在内的所有资源。
3)实体Bean
实体Bean表示企业的持久数据,由“主键”唯一标识。
在创建和存储持久数据时,将创建实体Bean;在销毁现有持久数据时,将销毁Bean。
可用两种方式处理数据持久性:
(1)BMP(Bean Managed Persistence,Bean管理的持久性)
(2)CMP(Container Managed Persistence,容器管理的持久性)
客户端可能直接访问实体Bean,不过这并非好方法,最好通过会话Bean访问实体Bean。这称为“会话外观(Session Facade)”。
3)消息驱动Bean
它是超轻量级Bean,使用异步通信模式与基于JMS的消息服务器交互。
此类Bean的架构和功能与会话EJB或实体EJB明显不同。
只当从侦听的JMS队列中接收到异步消息时,才激活MDB。
当客户端将消息发送给JMS主题或队列时,MDB将在收到消息后采取行动。