1、1中 间 件 技 术2第四章 J2EE技术知识点:知识点: J2EE概述 EJB模型重点:重点: EJB模型参考资料:参考资料: 精通EJB 美Ed Roman 电子工业出版社 中国IT实验室 http:/ J2EE4.1 J2EE概述概述J2MEJava 2 Micro Edition Java 2 平台平台微型版微型版:用于用于嵌入式系统嵌入式系统开发,例如掌上开发,例如掌上电脑,手机等。电脑,手机等。J2SE Java 2 Standard EditionJava 2 平台平台标准版标准版:用于创建典型的用于创建典型的桌面与工作站桌面与工作站应应用的用的Java平台,是实现可伸缩性、可移
2、植性、分布式平台,是实现可伸缩性、可移植性、分布式异构互操作应用软件开发的标准平台。异构互操作应用软件开发的标准平台。 J2EE Java 2 Enterprise EditionJava 2 平台平台企业版企业版:用于创建可扩缩的分布式的用于创建可扩缩的分布式的企业企业应用平台应用平台,例如电子商务网站和,例如电子商务网站和ERP系统系统 。44.1续J2EE四层模型四层模型浏览器浏览器Java BeanAppletWeb服务器服务器JSPServeletJSPEJB容器容器EJB桌面桌面Java应用应用ServeletEJB数据库数据库数据库数据库客户端客户端显示逻辑显示逻辑商业逻辑商业逻
3、辑企业信息系统企业信息系统EJBEJB54.1续J2EE相关技术EJB:定义:定义服务端组件服务端组件的的编写规则编写规则、组件之间的、组件之间的交互规则交互规则和应用服务器对组件的和应用服务器对组件的管理规则管理规则。RMI:Java远程方法调用远程方法调用,提供跨进程的组件通,提供跨进程的组件通信和相关的通信服务。信和相关的通信服务。RMI-IIOP:扩展了:扩展了RMI,提供与,提供与CORBA的集成,的集成,用于用于J2EE的的正式正式API。JNDI:Java名称和目录接口名称和目录接口,用于网络中定位,用于网络中定位组件和其他资源。组件和其他资源。JDBC:提供:提供关系数据库关系
4、数据库的连接和相应的数据库的连接和相应的数据库操作。操作。JTA和和JTS:使组件支持:使组件支持事务处理事务处理的的规范。的的规范。64.1续J2EE相关技术JMS:用于分布式对象的:用于分布式对象的异步通信异步通信。Java Servlets 和和JSP:适用于:适用于请求请求/应答模式应答模式分布分布式计算的网络组件。式计算的网络组件。Java IDL:用于基于:用于基于Java的的CORBA实现,使实现,使Java与其他与其他编程语言编程语言集成。集成。Connectors:使:使J2EE可以运行高端事务处理的可以运行高端事务处理的主机主机系统集成系统集成。 JCA/JCE/JSSE/
5、JAAS:安全服务体系安全服务体系,专门处,专门处理身份验证及权限管控理身份验证及权限管控 的标准服务。的标准服务。74.1续JavaBean技术JavaBean是是基于基于Java的的组件模型组件模型,类似于,类似于Microsoft的的COM组件。组件。通过通过JavaBean可以实现代码的可以实现代码的重复利用重复利用,扩充,扩充Java程序的功能,快速生成新的应用程序以及使程序更程序的功能,快速生成新的应用程序以及使程序更容易维护。容易维护。JavaBean比比EJB小得多,是小得多,是用来开发的组件用来开发的组件而不是而不是可部署的组件。可部署的组件。由于由于JavaBean只是只是
6、java类,不需要寄宿在类,不需要寄宿在运行时环运行时环境境中,进行生命周期控制。中,进行生命周期控制。 84.1续JavaBean技术JavaBean是是基于基于Java的的组件模型组件模型,类似于,类似于Microsoft的的COM组件。组件。通过通过JavaBean可以实现代码的可以实现代码的重复利用重复利用,扩充,扩充Java程序的功能,快速生成新的应用程序以及使程序更程序的功能,快速生成新的应用程序以及使程序更容易维护。容易维护。JavaBean比比EJB小得多,是小得多,是用来开发的组件用来开发的组件而不是而不是可部署的组件。可部署的组件。由于由于JavaBean只是只是java类
7、,不需要寄宿在类,不需要寄宿在运行时环运行时环境境中,进行生命周期控制。中,进行生命周期控制。 94.2 EJB4.2 EJB模型模型EJBEJB是一个由是一个由JavaJava语言开发的,可在多层的分布式环语言开发的,可在多层的分布式环境中部署的境中部署的服务器端软件组件服务器端软件组件, ,是是J2EEJ2EE技术的核心。技术的核心。EJBEJB的的核心思想核心思想是将是将商业逻辑商业逻辑与底层的与底层的系统逻辑系统逻辑分开,分开,使开发者只需关心商业逻辑,而由使开发者只需关心商业逻辑,而由EJBEJB容器容器实现目录实现目录服务、事务处理、持久性、安全性等底层系统逻辑,服务、事务处理、持
8、久性、安全性等底层系统逻辑,并且可创建具有并且可创建具有动态扩展性动态扩展性的服务器应用。的服务器应用。EJBEJB技术基于技术基于Java RMI-OPJava RMI-OP和和JNDIJNDI技术,包括技术,包括规范规范和和JavaJava接口接口两部分。两部分。104.2续什么是什么是EJBSun公司发布的文档中对公司发布的文档中对EJB的定义是:的定义是:EJB是用是用于开发和部署多层结构的、分布式的、面向对象的于开发和部署多层结构的、分布式的、面向对象的Java应用系统的跨平台的应用系统的跨平台的构件体系结构构件体系结构。EJB规范规范说明定义了说明定义了Java的服务器端的服务器端
9、构件模型构件模型。EJB是是在容器里执行的,在容器里执行的,Sun公司也发布了公司也发布了EJB容容器的规范器的规范,EJB可以在任何符合规范的容器中运行,可以在任何符合规范的容器中运行,容器其实就是给容器其实就是给EJB提供服务提供服务的的。114.2续EJB构件模型构件模型服务器服务器容容 器器客客 户户EJB组件组件124.2续显式的中间件显式的中间件134.2续显式的中间件144.2续隐式的中间件隐式的中间件请求拦截者通过请求拦截者通过EJB在部署描述在部署描述文件中描述的需文件中描述的需求信息,知道怎求信息,知道怎样去做。样去做。154.2续隐式的中间件164.2续EJB的构成EJB
10、类类EJB对象对象Home对象与对象与Home接口接口本地接口本地接口部署描述部署描述供应商特有文件供应商特有文件Ejb-jar文件文件17EJB架构184.2续EJB类EJB类是一个类是一个Java类,用户在类,用户在EJB类中根据需要编类中根据需要编写完成各种写完成各种业务功能业务功能的具体实现代码。的具体实现代码。EJB规范规范定义一些定义一些标准接口标准接口以供以供Bean类实现,这些类实现,这些接口强制规定公开编写某些接口强制规定公开编写某些Bean类必须提供的方类必须提供的方法。法。容器容器调用这些强制实现的方法来管理调用这些强制实现的方法来管理Bean。所有的商务所有的商务Bea
11、n类都必须实现的类都必须实现的最基本的接口最基本的接口是:是:javax.ejb.EnterpriseBean接口接口。这个接口起到标识。这个接口起到标识接口的作用。接口的作用。194.2续EJB类对于对于会话会话Bean,典型的,典型的EJB类包含与类包含与商务过程商务过程相关相关的逻辑。必须实现的逻辑。必须实现javax.ejb.SessionBean接口。接口。对于对于实体实体Bean,典型的,典型的EJB类包含与类包含与商务数据商务数据相关相关的逻辑。必须实现的逻辑。必须实现javax.ejb.EntityBean接口。接口。对于对于消息消息Bean,典型的,典型的EJB类包含类包含面
12、向消息面向消息的逻辑。的逻辑。必须实现必须实现javax.ejb.MessageDrivenBean接口。接口。204.2续EJB容器EJB容器是容器是EJB组件的组件的运行环境运行环境。EJB容器装载容器装载EJB,并且使得客户端程序能进行远程调用。并且使得客户端程序能进行远程调用。EJB容器负责将客户端程序连接到容器负责将客户端程序连接到Beans,执行,执行事务事务协调协调,提供数据存储,管理,提供数据存储,管理Bean的的生命周期生命周期等。等。EJB容器容器透明地透明地管理分布式组件体系结构的系统开管理分布式组件体系结构的系统开销,无论是销,无论是Bean还是调用还是调用Bean的客
13、户程序都不显式的客户程序都不显式地对地对EJB容器的容器的API进行编码进行编码从本质上讲,从本质上讲,EJB容器是客户端程序和容器是客户端程序和Bean之间看之间看不见的不见的中间人中间人。214.2续EJB容器容器一致性一致性 安全性安全性 可获得性可获得性生命周期管理生命周期管理 事务性事务性 分布性分布性可伸缩性可伸缩性 持久性持久性224.2续EJB对象对象EJB对象对象请求拦截器请求拦截器EJB对象是一种对象是一种代理对象代理对象,具有网络功能,执行事,具有网络功能,执行事务处理,提供安全措施等。在务处理,提供安全措施等。在Bean类实例响应方法类实例响应方法调用之前,调用之前,E
14、JB对象知道如何执行对象知道如何执行EJB容器所要求容器所要求的的中间逻辑中间逻辑。EJB对象对象复制并公开复制并公开Bean本身具有的所有本身具有的所有公开商务公开商务方法方法,把客户端所有的请求传递给,把客户端所有的请求传递给Bean。EJB对象是对象是EJB容器本身的一部分,所有的容器本身的一部分,所有的EJB对对象都包含与特定象都包含与特定EJB容器容器有关的代码有关的代码。EJB容器容器自自动生成动生成EJB对象的类文件。对象的类文件。234.2续EJB对象对象244.2续Remote接口接口容器如何知道克隆哪些容器如何知道克隆哪些商务方法商务方法? 由由Bean提供商编写的一个特殊
15、的接口,提供商编写的一个特殊的接口,复制复制对应的对应的Bean类公开的所有类公开的所有商务方法商务方法。EJB容器依据这些信容器依据这些信息自动生成对应的息自动生成对应的EJB对象对象。Remote接口必须遵守接口必须遵守EJB规范定义的规范定义的特殊规则特殊规则。所。所有的有的Remote接口必须来源于接口必须来源于Sun公司提供的一种通公司提供的一种通用接口用接口javax.ejb.EJBObject。Remote接口实际上就是接口实际上就是RMI-IIOP接口接口,它必须遵,它必须遵守守RMI-IIOP 参数传递约定。参数传递约定。254.2续Home对象对象客户端如何获得对客户端如何
16、获得对EJB对象的引用对象的引用?Home对象是对象是EJB对象的生成库对象的生成库,负责对,负责对EJB对象对象的实例化和回收。的实例化和回收。主要职责:主要职责:生成生成EJB对象对象查找查找现有的现有的EJB对象对象删除删除EJB对象对象对于每个对于每个EJB容器,容器,Home对象都是对象都是专用的专用的,特定,特定的,是的,是EJB容器的一部分,由容器的一部分,由EJB容器提供商提供容器提供商提供的软件工具的软件工具自动生成。自动生成。264.2续Home接口接口Home对象如何知道怎样初始化对象如何知道怎样初始化EJB对象对象?Home接口定义一组方法来接口定义一组方法来创建新的创
17、建新的EJB对象对象,查,查找、定位和清除已有的找、定位和清除已有的EJB对象。对象。Home接口仅仅定义接口仅仅定义生成、回收、查找生成、回收、查找EJB对象方对象方法,具体的由法,具体的由Home对象来实现对象来实现。Home接口必须扩展接口必须扩展javax.ejb.EJBHome 接口,而该接口,而该接口又从接口又从java.rmi.Remote扩展而来,因此扩展而来,因此Home对对象是完全具有网络功能。象是完全具有网络功能。EJB构件部署时构件部署时容器容器会自动生成相应会自动生成相应Home对象。对象。274.2续Home接口和接口和Home对象对象284.2续EJB远程通信模型
18、远程通信模型 客户(servlet,app) EJBObject 实现类的 STUB stub ORB IIOP /TCP/IP Minimal Object Adapter EJBObject 实现类的 Skeleton 类 DE Skeleton EJBObject 实现类 EJB 对象(用户实现) 容 器 生 成的包装类 RMI-IIOP 映射 RMI-IIOP 映射 29 过程对比过程对比 4.2续本地接口本地接口 客户调用客户调用本地对象本地对象; 本地对象完成所需本地对象完成所需中间中间件服务件服务;本地对象调用本地对象调用EJBEJB实例实例完完成相应服务后,将控制权成相应服务后
19、,将控制权返回给本地对象,本地对返回给本地对象,本地对象再将控制权返回给客户。象再将控制权返回给客户。Home接口接口客户调用客户调用本地代理本地代理;代理将参数整理成适合代理将参数整理成适合网络网络传输传输的形式;的形式;代理和代理和框架框架联系;联系;框架将参数再整理成适合于框架将参数再整理成适合于JavaJava的形式;的形式;框架调用框架调用EJBEJB对象对象;EJBEJB对象完成所需对象完成所需中间件服务中间件服务;EJBEJB对象调用对象调用EJBEJB实例实例完成相完成相应服务后,以上步骤都将在返应服务后,以上步骤都将在返回回HomeHome途中重复执行。途中重复执行。304.
20、2续本地接口本地接口Home接口接口缺陷缺陷:通过接口:通过接口生成生成Bean非常慢非常慢。本地接口是本地接口是EJB2.0的新功能,它实现通过的新功能,它实现通过本地对本地对象象以一种快速、高效的方式调用以一种快速、高效的方式调用EJB。本地对象本地对象实现本地接口。实现本地接口。缺陷:缺陷:只有在只有在同一进程同一进程中调用中调用Bean时,才有效。时,才有效。通过通过引用引用而不是通过值传递参数而不是通过值传递参数。314.2续部署描述部署描述部署描述声明一个指定的部署描述声明一个指定的Bean应该应该如何使用中间如何使用中间件件,而不是编写代码使用中间件。,而不是编写代码使用中间件。
21、部署描述可用来描述下列要求:部署描述可用来描述下列要求:Bean的管理和生命周期要求的管理和生命周期要求持久性要求持久性要求事务处理要求事务处理要求安全性要求安全性要求部署描述是一个部署描述是一个XML文件文件。部署描述实现了部署描述实现了不改变不改变EJB组件源代码组件源代码就调整组就调整组件使之适用于特定的部署应用环境。件使之适用于特定的部署应用环境。324.2续供应商特有文件供应商特有文件每个每个EJB服务器供应商都有一些自己独特的服务器供应商都有一些自己独特的增值增值特性特性,EJB规范没有涉及这些特性,例如,怎样规范没有涉及这些特性,例如,怎样配制装载平衡、群集、监控等。配制装载平衡
22、、群集、监控等。EJB服务器供应商服务器供应商一般要求包括一些供应商特有一般要求包括一些供应商特有文件,例如,文件,例如,XML文件、文本文件或者二进制文文件、文本文件或者二进制文件。件。供应商特有文件供应商特有文件不能不能在不同应用服务器之间在不同应用服务器之间移植移植。334.2续Ejb-jar文件文件Ejb-jar文件是一个文件是一个.zip压缩文件压缩文件,包含,包含Bean类类、Home接口接口、Remote接口接口及及部署描述文件部署描述文件。Ejb-jar文件一旦生成,即代表文件一旦生成,即代表EJB设计完成,可设计完成,可成为应用服务器的一个成为应用服务器的一个可部署应用单元可
23、部署应用单元了。了。部署部署EJB时,时,EJB容器容器提供商提供提供商提供解压缩工具解压缩工具读取读取和提取和提取Ejb-jar文件内的信息,文件内的信息,部署员部署员从而执行其从而执行其特定的任务。特定的任务。Ejb-jar文件是文件是所有所有EJB工具工具都必须支持的都必须支持的标准特标准特性性。344.2续Ejb-jar文件文件354.2续EJB构件的实现步骤创建创建Bean的的实现类实现类;创建创建Remote接口接口;创建创建Home接口接口;编译编译Remote接口、接口、Home接口、接口、bean实现类实现类;创建创建部署描述部署描述文件文件;将以上三个文件与部署描述符文件打包为一个将以上三个文件与部署描述符文件打包为一个ejb-jar文件文件;部署部署EJB构件。构件。364.2续客户与客户与EJB的交互过程的交互过程客户客户目录服务器目录服务器HOME对象对象EJB对象对象EJB实例实例EJB服务器服务器/ /EJB容器容器J2EE服务服务JNDI374.2续客户与客户与EJB的交互过程的交互过程38作业作业 1简述中间件产生背景、概念、组成结构及核心简述中间件产生背景、概念、组成结构及核心技术。(技术。(P18P18)简述简述COMCOM结构、接口及类工厂。(结构、接口及类工厂。(P40P40)