您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 工作范文 > 第16章-EJB概述
第三部分EJB部分主要内容:EJB概述EJB2.X介绍EJB3概述会话Bean会话Bean实例消息服务及消息驱动BeanEJB环境第16章EJB概述主要内容:EJB的目标EJB的特点EJB的角色EJB的类型EJB的编程规约16.1EJB的目标构建面向对象的业务应用的标准组件架构。构建分布式的业务应用的标准组件架构。支持WebService的开发、部署和使用。简化应用程序的编写。遵循Java编程语言的“WriteOnce,RunAnywhere™”特性。解决企业应用生命周期中的开发、部署和运行等各方面问题。不同厂商的开发、部署组件的工具能够在运行的时候相互协作。使用不同厂商的工具开发的组件来构建应用提供EJB和JavaEE组件和非Java编写的应用之间的交互。与已经存在的服务器平台兼容。与其它JavaAPI兼容。与CORBA协议兼容。16.2EJB的特点包含对企业数据进行操作的业务逻辑。EJB的实例在运行的时候由容器来管理。在部署的时候,通过编辑它的环境入口,可以定制EJB。包含各种服务信息,例如事务和安全属性,可以与EJB的业务逻辑一起以元注释的形式指定,或者单独以XML部署描述符的形式指定。在应用组装和部署的时候可以使用工具来抽取和管理这些服务信息。客户端的访问通过企业Bean所部署的容器中转。如果企业Bean只使用EJB规范定义的服务,企业Bean可以被部署到任何兼容的EJB容器。特定的容器可以提供EJB规范定义之外的服务。不进行源代码的修改和企业Bean的重新编译,一个企业Bean就可以被用在一个集成应用中。Bean提供者定义企业Bean的客户端视图(访问接口)。Bean提供者可以手动的定义客户端视图,或者自动由应用开发工具生成。16.3*EJB的角色企业Bean提供者编写实现EJB业务方法的Java类;定义Bean的业务接口;Bean元数据的声明性定义。应用组装者应用组装者的输入是一个或者多个Bean提供者编写的ejb-jar文件。应用组装者的输出是包含EJB以及它们的应用组装指令的一个或者多个ejb-jar文件。部署者把EJB部署到特定的运行环境中。运行环境中包含一个特定的EJB服务器和容器。部署者必须解决所有的Bean提供者声明的外部依赖。要遵循应用组装者定义的应用组装指令。部署者的输出是一组EJB。部署过程生成能够使容器在运行时候管理EJB的其它类和接口真正把EJB和其它类以及接口安装到EJB容器中EJB服务器提供者EJB服务器提供者是在分布式事务管理、分布式对象和其它底层系统级服务领域的专家。一个典型的EJB服务器提供者是一个OS厂商,中间件厂商或者数据库厂商。目前的EJB架构假设EJB服务器提供者和EJB容器提供者是相同的厂商。因此,没有定义EJB服务器提供者的任何接口需求。EJB容器提供者提供部署EJB所需要的部署工具。为部署的EJB提供运行时支持。持久提供者持久性提供者的专长是对象/关系映射,查询处理和缓存。持久性提供者的重点是为持久性管理提供可扩展的、能够支持事务的运行时环境。持久性提供者提供把持久实体映射到关系数据库的对象/关系映射所需要的工具,并为持久实体的管理以及对数据库的映射的管理提供运行时支持。持久性提供者可能和EJB容器提供者是相同的厂商,可能是第三方厂商提供的可插入的持久性环境。系统管理员负责配置和管理企业计算架构和网络架构,包括EJB服务器和容器。负责监视部署好的企业应用在运行时候的状况。16.4EJB的类型有3种类型的EJB对象会话Bean消息驱动Bean实体Bean16.4.1会话Bean特点代表一个单独的客户端执行,每个客户端会对应自己的一个会话对象。可能涉及事务处理。可能会更新数据库中的共享数据。不直接表示数据库中的数据,尽管可以访问和更新这些数据。生命周期相对较短。当EJB容器down掉的时候会话对象就会被删除。分类:有状态会话Bean无状态会话Bean16.4.2消息驱动对象它的执行依赖于从客户端接收的消息。一直处于监听状态,当有消息到达的时候会调用消息驱动对象的方法。是异步调用。可能涉及事务处理。可能会更新所使用的数据库中的数据。不直接表示数据库中的数据,尽管可以访问和更新这些数据。生命周期相对较短。是无状态的,对于任何一个消息来说,可以使用任何消息驱动对象来服务。当EJB容器down掉的时候会话对象就会被删除。16.4.3实体Bean是域模型的部分,提供数据库中数据的视图。可以长期存在(存在时间与数据库中的数据一样长)。实体和它的主键不受容器down机的影响。如果在容器down掉的时候事务更新了实体的状态,当实体再次被检索的时候,实体的状态会被恢复到最后提交的事务的状态。16.5编程规约在编写EJB的时候会有一些约束,包括:EJB不能使用能够进行读/写的静态域。可以使用只读的静态域。因此,建议EJB中的所有静态域声明为final类型的。EJB不能使用线程同步来同步多个实例的执行。EJB不能使用AWT功能来试图向显示器输出信息,或者从键盘输入信息。EJB不能使用java.io包来试图访问文件系统中的文件和目录。EJB不能试图监听一个端口,接收对一个端口的连接,或者使用端口进行广播。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作为参数或者方法的结果进行传递。本章小结EJB的目标。EJB的特点。EJB的类型。EJB的角色。EJB的编程规约。下一章EJB2.X
本文标题:第16章-EJB概述
链接地址:https://www.777doc.com/doc-4744201 .html