第5章 EJB概述

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5.7 Bean容器的规约
EJB服务器中围绕 bean的周边环境称之为容器。它充当bean 和EJB服务器之间的中介,管理着EJB对象并帮助服务器构件 管理bean资源,它还提供诸如事务,安全,并发和运行期命 名(naming at runtime)之类的服务。容器与服务器之间的 区别并没有明确的界定。 Enterprise bean组件通过定义良好的组件模型与EJB容器进 行交互。各类EJB都可以注册由EJB容器产生的各种生命周期 事件。它们通过为bean class的方法添加注解的方式来注册 感兴趣的特定事件。在运行期间,当相关事件发生时,容器 会调用bean实例上这些被注解了的方法。例如,当分配了 EJB实例并将被引用的服务注入其中之后,假如提供了EJB的 bean class,容器便会调用该bean class上标注了 @javax.annotation. PostConstruct的方法。该调用为bean实例 提供了机会,使其可以在为请求提供服务之前,做一些额外 的初始化工作。Bean class也可以以同样的方式使用其他回 调函数。EJB规定了何时调用这些回调方法,以及在其上下 文中能做些什么。
5.4 EJB的角色
EJB架构定义了在应用开发和部署声明周 期中的7种不同的角色。EJB架构通过定义协 议来保证一个角色开发的产品与另外一个角 色的产品是兼容的。EJB规范的重点在于支持 开发和部署独立软件开发商编写的EJB协议。 5.4.1 EJB提供者
编写实现EJB业务方法的Java类; 定义Bean的业务接口; Bean元数据的声明性定义。
什么是EJB?
EJB是服务器端组件模型,它封装了应用的 业务逻辑。 EJB最早于1997年由IBM提出,随即被Sun采 用并形成标准(EJB 1.0 和EJB 1.1)。其 后在Java社区进程(Java Community Process)支持下陆续有一些JSR被制订来 定义新的EJB标准,分别是JSR 19 (EJB 2.0), JSR 153 (EJB 2.1) 以及最新的JSR 220 (EJB 3.0)。
5.6 编程规约
在编写EJB的时候会有一些约束,包括:
EJB不能使用能够进行读/写的静态域。可以使用只读的 静态域。因此,建议EJB中的所有静态域声明为final类 型的。 EJB不能使用线程同步来同步多个实例的执行。 EJB不能使用AWT功能来试图向显示器输出信息,或者从 键盘输入信息。 EJB不能使用java.io包来试图访问文件系统中的文件和 目录。 EJB不能试图监听一个端口,接收对一个端口的连接,或 者使用端口进行广播。
生成能够使容器在运行时候管理EJB的其它类和接口 真正把EJB和其它类以及接口安装到EJB容器中
5.4 EJB角色
5.4.4 EJB服务器提供者
EJB服务器提供者是在分布式事务管理、分布式 对象和其它底层系统级服务领域的专家。一个典 型的EJB服务器提供者是一个OS厂商,中间件厂 商或者数据库厂商。 目前的EJB架构假设EJB服务器提供者和EJB容器 提供者是相同的厂商。因此,没有定义EJB服务 器提供者的任何接口需求。
5.7 Bean容器的规约
在EJB 3.0中,你的代码不用像以前版本的EJB规范那样必须 实现一个空的回调函数。你只为那些感兴趣的事件编写代码。 实现回调方法的bean通常会访问不受EJB系统管理的资源, 封装了遗留系统的enterprise bean通常归于此类。 javax.ejb.EJBContext 是一个由容器实现的接口,同时也 是bean容器规约的组成部分。Session bean使用一个叫做 javax.ejb.SessionContext的子类。Message-driven bean 则使用javax.ejb.MessageDrivenContext子类。这些 EJBContext类型为bean提供了其所在环境的相关信息,内容 涉及:容器,使用enterprise bean的客户端,以及bean本 身。Bean可以在处理来自客户端的请求和来自容器的回调方 法时使用这些信息。 除此以外,enterprise bean的接口还包含了JNDI名字空间, 我们称其为环境命名上下文(environment-naming context), bean可以用它来查找所需的资源(包括其他的bean)。
5.4 EJB角色
5.4.7 系统管理员
负责配置和管理企业计算架构和网络架构,包括 EJB服务器和容器。 负责监视部署的企业应用在运行时候的状况。
5.5 EJB3.0的类型
会话
有状态会话Bean 无状态会话Bean
消息驱动Bean Web Service组件 Java持久化API
5.5 EJB的类型
5.6 编程规约(续)
EJB不能试图查询一个类来获取关于声明的成员的信息, 因为Java语言的安全规则, EJB不能访问这些成员的。 EJB不能试图使用反射API来访问Java编程语言的安全规 则所限制访问的信息。 EJB不能试图创建一个类加载器,获取当前的类加载器, 设置上下文类加载器,设置安全管理器,创建安全管理 器,停止JVM,改变输入、输出和错误流。 EJB不能试图设置ServerSocket、Socket所使用的端口工 厂,或者URL使用的流处理者工厂。 EJB不能试图管理线程。企业Bean不能试图开始、停止、 挂起或者重新开始一个线程,或者改变一个线程的优先 级或者名字。企业Bean不能试图管理线程组。 EJB不能试图直接读写文件描述器。 EJB不能试图获取特定代码源的安全策略信息。
5.5 EJB的类型
5.5.4 JPA
Java Persistence API,JPA通过JDK 5.0注解或 XML描述对象-关系表的映射关系,并将运行期 的实体对象持久化到数据库中。 可以长期存在(存在时间与数据库中的数据一样 长)。 JPA包括以下3方面的技术(1)ORM映射元数据 (2)JPA 的API(3)查询语言
5.3 EJB的特点
客户端的访问通过企业Bean所部署的容器中转。 如果企业Bean只使用EJB规范定义的服务,企业Bean 可以被部署到任何兼容的EJB容器。特定的容器可以 提供EJB规范定义之外的服务。 不进行源代码的修改和企业Bean的重新编译,一个 企业Bean就可以被用在一个集成应用中。 Bean提供者定义企业Bean的客户端视图(访问接 口)。Bean提供者可以手动的定义客户端视图,或 者自动由应用开发工具生成。
5.6 编程规约(续)
EJB不能试图加载本地库。 EJB不能试图得到对包和类的访问入口,这些包和类是 Java编程语言的一般规则限制EJB不能访问的。 EJB不能试图在一个包中定义一个类。 EJB不能试图访问或者修改安全配置对象(策略、安全 性、提供者、签名者和身份)。 EJB不能试图使用子类和Java串行化协议的对象替换特 性。 EJB不能试图把this作为参数或者方法的结果进行传递。
分为有状态会话Bean和无状态会话Bean。
5.5 EJB的类型
5.5.2 消息驱动Bean
它的执行依赖于从客户端接收的消息。一直处于监听状 态,当有消息到达的时候会调用消息驱动对象的方法。 是异步调用。 可能涉及事务处理。 可能会更新所使用的数据库中的数据。 不直接表示数据库中的数据,尽管可以访问和更新这些 数据。 相对来说生命周期较短。 是无状态的,对于任何一个消息来说,可以使用任何消 息驱动对象来服务。 当EJB容器down掉的时候会话对象就会被删除,客户端必 须重新建立一个新的消息驱动对象。
5.4 EJB的角色
5.4.2 应用组装者
应用组装者的输入是一个或者多个Bean提供者编 写的ejb-jar文件。 应用组装者的输出是包含EJB以及它们的应用组 装指令的一个或者多个ejb-jar文件。
5.4 EJB角色
5.4.3 部署者
把EJB部署到特定的运行环境中。运行环境中包 含一个特定的EJB服务器和容器。 部署者必须解决所有的Bean提供者声明的外部依 赖。 要遵循应用组装者定义的应用组装指令。 部署者的输出是一组EJB。 部署过程
5.1 EJB的目标(续)
不同厂商的开发、部署组件的工具能够在运 行的时候相互协作。 使用不同厂商的工具开发的组件来构建应用 提供EJB和Java EE组件以及非Java语言编写 的应用之间的交互。 与已经存在的服务器平台兼容。 与其它Java API兼容。 与CORBA协议兼容。
5.2 EJB容器责任
包含对企业数据进行操作的业务逻辑。 EJB的实例在运行的时候由容器来管理。 在部署的时候,通过编辑它的环境入口,可 以定制EJB。 包含各种服务信息,例如事务和安全属性, 可以与EJB的业务逻辑一起以元注释的形式指 定,或者单独以XML部署描述符的形式指定。 在应用组装和部署的时候可以使用工具来抽 取和管理这些服务信息。
5.2 EJB容器责任
所有的EJB 实例都运行在EJB容器中。容器提 供了系统级的服务,控制了EJB的生命周期。 因为容器掌握了绝大多数系统级的事情,开 发者不需要应用逻辑考虑进来。
实体Bean管数据的持久性 有状态会话Bean的状态管理 生命周期管理 远程通信 事务管理 安全
5.3 EJB的特点
5.4 EJB角色
5.4.5 EJB容器提供者
提供部署EJB所需要的部署工具。 为部署的EJB提供运行时支持。 容器运行时环境为部署的EJB提供事务和安全管 理、远程客户端的网络发布、可扩展的资源管理 和其他管理服务器平台所需的服务。
5.4 EJB角色
5.4.6 持久提供者
持久性提供者的专长是对象/关系映射,查询处理和缓存。 持久性提供者的重点是为持久性管理提供可扩展的、能 够支持事务的运行时环境。 持久性提供者提供来自百度文库持久实体映射到关系数据库的对象/ 关系映射所需要的工具,并为持久实体的管理以及对数 据库的映射的管理提供运行时支持。 持久性提供者可能和EJB容器提供者是相同的厂商,可能 是第三方厂商提供的可插入的持久性环境。
5.1 EJB的目标
构建面向对象的业务应用的标准组件架构。 构建面向对象 构建分布式的 分布式的业务应用的标准组件架构。 分布式的 将支持Web Service 支持Web Service的开发、部署和使用。 支持 简化应用程序的编写。 简化应用程序的编写。 遵循Java编程语言的“Write Once, Run Write Anywhere™ Anywhere™”特性。 解决企业应用生命周期中的开发、部署和运 开发、 开发 行等各方面问题。 行等各方面问题
第二部分 EJB部分
JavaEE5 教程 吉林大学软件学院
第二部分主要内容
EJB概述 EJB 3概述 会话Bean 消息服务及消息驱动Bean Web Service JPA
第5章 EJB概述
JavaEE5 教程 吉林大学软件学院
主要内容
EJB的目标 EJB的特点 EJB的角色 EJB的类型 EJB的编程规约 小结
5.5 EJB的类型
5.5.3 Web Service组件 它是一种构建应用程序的普遍模型,可以在任何支持 网络通信的操作系统中实施运行;它是一种新的web 应用程序分支,是自包含、自描述、模块化的应用, 可以发布、定位、通过web调用。Web Service是一 个应用组件,它逻辑性的为其他应用程序提供数据与 服务.各应用程序通过网络协议和规定的一些标准数 据格式(Http,XML,Soap)来访问Web Service,通 过Web Service内部执行得到所需结果.Web Service 可以执行从简单的请求到复杂商务处理的任何功能。 一旦部署以后,其他Web Service应用程序可以发现 并调用它部署的服务。
5.5.1 会话Bean
特点
代表一个单独的客户端执行,每个客户端会对应自己的一个会话 对象。 可能涉及事务处理。 可能会更新所使用的数据库中的共享数据。 不直接表示数据库中的数据,尽管可以访问和更新这些数据。 生命周期相对较短。 当EJB容器down掉的时候会话对象就会被删除,客户端必须重新 建立一个新的会话对象。
相关文档
最新文档