EJB——概述、无状态会话Bean.ppt_第1页
EJB——概述、无状态会话Bean.ppt_第2页
EJB——概述、无状态会话Bean.ppt_第3页
EJB——概述、无状态会话Bean.ppt_第4页
EJB——概述、无状态会话Bean.ppt_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

主要内容,什么是EJB EJB的目标 EJB的特点 EJB的角色 EJB的类型 EJB的编程规约 小结,什么是EJB,思考题:如果JavaBean需要在远程访问,如何处理? 需要为JavaBean提供网络功能 需要处理访问过程中的异常 需要接收用户的请求信息 需要对用户进行响应 请求和响应中可能使用对象,如何处理? 其它问题? 客户端如何访问? EJB就是来解决这些问题的,什么是EJB,Enterprise JavaBean,首先是JavaBean,其次是企业级的JavaBean。 本质是仍然是JavaBean,具有JavaBean的特点 能够完成特定的功能 功能用于共享,是组成一个系统的一部分 不能独立运行,主要是供其它客户端使用 具有企业级应用的特点 涉及网络连接 涉及远程方法调用 需要处理异常 需要处理安全 可能与其他系统进行交互,什么是EJB,是规范 规定了应用服务器要支持EJB组件需要提供哪些功能。 规定了EJB组件提供者应该如何编写标准组件。 规定了应用组装人员、部署人员如何组件打包成应用、如何部署应用。 规定了工具提供商如何来协助完成开发、部署、监测等功能。 组件 能够完成特定的功能 需要按照规范编写,EJB的目标,构建面向对象的业务应用的标准组件架构。 构建分布式的业务应用的标准组件架构。 将支持Web Service的开发、部署和使用。 简化应用程序的编写。 遵循Java编程语言的“Write Once, Run Anywhere”特性。 解决企业应用生命周期中的开发、部署和运行等各方面问题。,EJB的目标(续),不同厂商的开发、部署组件的工具能够在运行的时候相互协作。 使用不同厂商的工具开发的组件来构建应用 提供EJB和Java EE组件以及非Java语言编写的应用之间的交互。 与已经存在的服务器平台兼容。 与其它Java API兼容。 与CORBA协议兼容。,EJB的特点,包含对企业数据进行操作的业务逻辑。 EJB的实例在运行的时候由容器来管理。 在部署的时候,通过编辑它的环境入口,可以定制EJB。 包含各种服务信息,例如事务和安全属性,可以与EJB的业务逻辑一起以元注释的形式指定,或者单独以XML部署描述符的形式指定。在应用组装和部署的时候可以使用工具来抽取和管理这些服务信息。,EJB的特点(续),客户端的访问通过企业Bean所部署的容器中转。 如果企业Bean只使用EJB规范定义的服务,企业Bean可以被部署到任何兼容的EJB容器。特定的容器可以提供EJB规范定义之外的服务。 不进行源代码的修改和企业Bean的重新编译,一个企业Bean就可以被用在一个集成应用中。 Bean提供者定义企业Bean的客户端视图(访问接口)。Bean提供者可以手动的定义客户端视图,或者自动由应用开发工具生成。,EJB的角色,企业Bean提供者 编写实现EJB业务方法的Java类; 定义Bean的业务接口; Bean元数据的声明性定义。,EJB的角色,应用组装者 应用组装者的输入是一个或者多个Bean提供者编写的ejb-jar文件。 应用组装者的输出是包含EJB以及它们的应用组装指令的一个或者多个ejb-jar文件。,EJB角色,部署者 把EJB部署到特定的运行环境中。运行环境中包含一个特定的EJB服务器和容器。 部署者必须解决所有的Bean提供者声明的外部依赖。 要遵循应用组装者定义的应用组装指令。 部署者的输出是一组EJB。 部署过程 生成能够使容器在运行时候管理EJB的其它类和接口 真正把EJB和其它类以及接口安装到EJB容器中,EJB角色,EJB服务器提供者 EJB服务器提供者是在分布式事务管理、分布式对象和其它底层系统级服务领域的专家。一个典型的EJB服务器提供者是一个OS厂商,中间件厂商或者数据库厂商。 目前的EJB架构假设EJB服务器提供者和EJB容器提供者是相同的厂商。因此,没有定义EJB服务器提供者的任何接口需求。,EJB角色,EJB容器提供者 提供部署EJB所需要的部署工具。 为部署的EJB提供运行时支持。,EJB角色,持久提供者 持久性提供者的专长是对象/关系映射,查询处理和缓存。 持久性提供者的重点是为持久性管理提供可扩展的、能够支持事务的运行时环境。 持久性提供者提供把持久实体映射到关系数据库的对象/关系映射所需要的工具,并为持久实体的管理以及对数据库的映射的管理提供运行时支持。 持久性提供者可能和EJB容器提供者是相同的厂商,可能是第三方厂商提供的可插入的持久性环境。,EJB角色,系统管理员 负责配置和管理企业计算架构和网络架构,包括EJB服务器和容器。 负责监视部署好的企业应用在运行时候的状况。,EJB的类型,在EJB2中: 会话Bean(SessionBean) 有状态会话Bean(SFSB) 无状态会话Bean(SLSB) 实体Bean(EntityBean) 容器管理持久性实体Bean(CMP实体Bean) Bean管理持久性实体Bean(BMP实体Bean) 消息驱动Bean(MessageDrivenBean,MDB),EJB的类型,EJB3中 会话Bean 有状态会话Bean 无状态会话Bean 实体(通过JPA访问) 消息驱动Bean,EJB的类型,会话Bean对象 特点 代表一个单独的客户端执行,每个客户端会对应自己的一个会话对象。 可能涉及事务处理。 可能会更新所使用的数据库中的共享数据。 不直接表示数据库中的数据,尽管可以访问和更新这些数据。 生命周期相对较短。 当EJB容器down掉的时候会话对象就会被删除,客户端必须重新建立一个新的会话对象。 分为有状态会话Bean和无状态会话Bean。,EJB的类型,消息驱动Bean对象 它的执行依赖于从客户端接收的消息。一直处于监听状态,当有消息到达的时候会调用消息驱动对象的方法。 是异步调用。 可能涉及事务处理。 可能会更新所使用的数据库中的数据。 不直接表示数据库中的数据,尽管可以访问和更新这些数据。 相对来说生命周期较短。 是无状态的,对于任何一个消息来说,可以使用任何消息驱动对象来服务。 当EJB容器down掉的时候会话对象就会被删除,客户端必须重新建立一个新的消息驱动对象。,EJB的类型,实体对象 是域模型的部分,提供数据库中数据的视图。 可以长期存在(存在时间与数据库中的数据一样长)。 实体和它的主键不受容器down机的影响。如果在容器down掉的时候事务更新了实体的状态,当实体再次被检索的时候,实体的状态会被恢复到最后提交的事务的状态。,编程规约,因为EJB特殊的运行环境以及访问方式,在编写EJB的时候有一些约束,这些约束包括: EJB不能使用能够进行读/写的静态域。可以使用只读的静态域。因此,建议EJB中的所有静态域声明为final类型的。 EJB不能使用线程同步来同步多个实例的执行。 EJB不能使用AWT功能来试图向显示器输出信息,或者从键盘输入信息。 EJB不能使用java.io包来试图访问文件系统中的文件和目录。 EJB不能试图监听一个端口,接收对一个端口的连接,或者使用端口进行广播。,16.5 编程规约(续),EJB不能试图查询一个类来获取关于声明的成员的信息,因为Java语言的安全规则, EJB不能访问这些成员的。 EJB不能试图使用反射API来访问Java编程语言的安全规则所限制访问的信息。 EJB不能试图创建一个类加载器,获取当前的类加载器,设置上下文类加载器,设置安全管理器,创建安全管理器,停止JVM,改变输入、输出和错误流。 EJB不能试图设置ServerSocket、Socket所使用的端口工厂,或者URL使用的流处理者工厂。 EJB不能试图管理线程。企业Bean不能试图开始、停止、挂起或者重新开始一个线程,或者改变一个线程的优先级或者名字。企业Bean不能试图管理线程组。 EJB不能试图直接读写文件描述器。 EJB不能试图获取特定代码源的安全策略信息。,编程规约(续),EJB不能试图加载本地库。 EJB不能试图得到对包和类的访问入口,这些包和类是Java编程语言的一般规则限制EJB不能访问的。 EJB不能试图在一个包中定义一个类。 EJB不能试图访问或者修改安全配置对象(策略、安全性、提供者、签名者和身份)。 EJB不能试图使用子类和Java串行化协议的对象替换特性。 EJB不能试图把this作为参数或者方法的结果进行传递。,无状态会话Bean,特点 强调功能,相对于实体Bean,后者强调数据处理。 所有客户端共享无状态会话Bean的对象,对象的成员变量和方法也是所有客户端共享的,所以客户端的多次调用之间不能共享信息,所以是无状态的。 服务器端直需要创建少量的Bean对象就可以满足多个客户端的需要。,无状态会话Bean的生命周期,无状态会话Bean的文件组成,Bean类:实现业务接口中定义的所有方法以及所有生命周期回调方法。 业务接口:用于定义EJB类需要实现的业务方法的接口。 home接口(EJB2中需要),通过该接口得到EJB对象 辅助类:实现EJB功能时候所需要的其他类,例如异常类和工具类。,Bean相关的命名规则,无状态会话Bean的Bean类,使用Stateless注释,在类的前面添加Stateless 实现业务接口,也可以实现其他接口 使用注释PostConstruct、PreDestory声明生命周期回调方法,当生命周期事件发生的时候会调用该方法 使用WebMethod注释标记Web Service方法 可以通过依赖注入的方式注入需要的资源,例如数据源、事务处理对象等,SLSB的Bean类(实例),Stateless Remote public class CalculatorBean implements Calculator public float add (int a, int b) return a + b; public float subtract (int a, int b) return a - b; ,SLSB的业务接口,可以是普通的Java接口(在EJB2中需要继承) 通过Remote或者Local声明接口为供远程访问的接口还是供本地访问的接口,默认为本地接口。也可以在Bean中声明。 如果Bean类实现了一个接口,这个接口被认为是Bean类的业务接口,默认是本地业务接口。 Bean类被允许有多个接口,必须清楚地使用Local或者Remote注释或者使用部署描述器标识业务接口。,SLSB的业务接口(例),public interface Calculator

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论