J2EE Architecture(12)
1、EJB规范
EJB(Enterprise JavaBean)是最重要的组件,也是J2EE技术的重要组成部分。
与Servlet和JSP不同,EJB能够为企业应用程序提供业务逻辑和数据访问逻辑支持。
2、EJB描述了一些不同的EJB角色
1)EJB提供者
其创建Bean,Bean执行企业需要的业务操作。提供者根据企业的业务规则,将业务规则编入适当方法。
2)应用程序组装者
其根据需要,将一个或多个EJB提供者创建的Bean组装为可部署的应用程序单元。
组装者还组装其它组件,如Web组件,以创建更大规模的企业应用程序。
3)应用程序部署者
应用程序部署者的任务是在符合企业要求的操作环境中,“部署”组装的企业应用程序。
部署者要确保在适当的EJB容器和EJB服务器中完成开发,确保在部署时分析所有外部实体,并确保企业应用程序可以使用所有资源。
4)EJB Server提供者
其实际上就是厂商。厂商有能力创建需要关键功能的分布式企业应用程序。
5)EJB容器提供者
EJB协助提供EJB工具和运行时支持。工具可帮助部署者在操作环境中部署应用程序。
6)系统管理员
其职责包括企业系统运行和分布式网络环境的维护,包括EJB Server和EJB容器。
EJB规范可以确保不同角色能共同工作。
3、EJB详解
1)介绍
Bean并非普通Java对象,而是3个实体的组合:home接口、component接口和Object Identity(对象标识)。
部署在操作系统的Bean包含所有这些实体。各实体在Bean的生命期和功能方面担当不同的角色。
local(本地)接口时EJB2.0引入的新特性,能在设计级别完善EJB。
2)home接口
它用来创建、查找或删除同类EJB,定义适当方法创建、查找或删除EJB。
home接口还支持特殊home业务方法,home业务方法不针对任何特殊Bean实例。
远程客户端使用远程home接口,本地客户端使用本地home接口。
3)component接口
它负责在EJB上“执行业务方法”,声明企业应用程序需要的所有业务方法。
component接口可以是本地或远程接口。
4)本地接口
本地客户端可能是一个企业Bean,与其它企业Bean处在同一个JVM中。
在使用本地接口时,不需要远程开销,故能优化访问企业Bean。
本地接口可与“远程”接口共存。
与本地客户端不同,远程客户端需要远程JNDI查找功能。
本地Bean可相互通信,以调用执行业务流程需要的业务方法,传输的参数和返回值不需要串行化,参数按引用传递。
5)对象标识
对象标识实际上就是EJB对象。EJB2.1开始支持3类EJB对象:
(1)会话Bean
会话Bean是企业应用程序的会话创建者,代表EJB服务器中的本地或远程客户端。
会话Bean是轻量级服务器端组件,支持事务,能执行业务操作。
当客户端准备执行时,容器将创建会话Bean,或从Bean池中检索会话Bean;当执行结束时,容器将销毁会话Bean,或将Bean的内容设置为“空”或默认值后,将会话Bean返回Bean池。
会话Bean可能有状态,也可能无状态。无状态会话Bean可为本地或远程客户端提供“Web服务端点”。
(2)实体Bean
实体Bean提供共享数据库的持久数据视图。它们是持久数据,只要相应数据存在,实体Bean的实例就一直存在。
与会话Bean和不同,当容器崩溃时,实体Bean、实体Bean的远程引用相应主键可存活下来。
(3)消息驱动Bean
消息驱动Bean(Message Driven Bean,MDB)在多个方面的表现与会话Bean和实体Bean不同,MDB不包含home或component接口,没有Web服务端点,MDB能在某种程度上执行与会话Bean类似的业务逻辑操作。
MDB无状态,支持事务,是轻量级服务器端组件,可以以异步方式为消息传输中间件提供“桥梁”。
MDB可访问底层数据库中的共享数据。