J2EE教程第3章SessionBean课件.ppt

上传人(卖家):晟晟文业 文档编号:5191987 上传时间:2023-02-16 格式:PPT 页数:58 大小:981KB
下载 相关 举报
J2EE教程第3章SessionBean课件.ppt_第1页
第1页 / 共58页
J2EE教程第3章SessionBean课件.ppt_第2页
第2页 / 共58页
J2EE教程第3章SessionBean课件.ppt_第3页
第3页 / 共58页
J2EE教程第3章SessionBean课件.ppt_第4页
第4页 / 共58页
J2EE教程第3章SessionBean课件.ppt_第5页
第5页 / 共58页
点击查看更多>>
资源描述

1、声明声明n本课件仅用于北京航空航天大学计算机学院的本课件仅用于北京航空航天大学计算机学院的教学;教学;n本课件修改采用了一些网络资源(论文、研究本课件修改采用了一些网络资源(论文、研究报告、技术报告等),在采用的时候并没有准报告、技术报告等),在采用的时候并没有准确标注引用信息。确标注引用信息。J2EE教程教程第第3章章 Session Beann分布式系统:分布式系统:q程序运行在不同的地址空间程序运行在不同的地址空间(通常是不同的主机上通常是不同的主机上)q进程之间的通信是分布式系统的一个基本问题进程之间的通信是分布式系统的一个基本问题程序A程序B内容提要内容提要n3.1 SOCKETn3

2、.2 RPCn3.3 RMIn3.4 Session Beann3.5 小结小结3.1 SOCKETnSocket 是一个基本的通信机制是一个基本的通信机制nSocket是应用层与是应用层与TCP/IP协议族通信的中间协议族通信的中间软件抽象层,它是一组接口。软件抽象层,它是一组接口。nSocket把复杂的把复杂的TCP/IP协议族隐藏在协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是接口后面,对用户来说,一组简单的接口就是全部,让全部,让Socket去组织数据,以符合指定的去组织数据,以符合指定的协议。协议。n优势:优势:q功能强大功能强大n挑战:挑战:q过于底层,涉及一套复

3、杂的流程,要求每个应用的过于底层,涉及一套复杂的流程,要求每个应用的客户端和服务器端都参与到一套复杂的应用层协议客户端和服务器端都参与到一套复杂的应用层协议中;中;q程序代码量多,容易出错且难以调试。程序代码量多,容易出错且难以调试。3.2 RPCn最初由最初由 Sun 微系统提出微系统提出 RFC(1984年年Birrell和和Nelson的一篇论文中提出?的一篇论文中提出?),),并应用于并应用于Unix系统系统nIETF ONC 宪章重新修订了宪章重新修订了Sun版本,使得版本,使得ONC RPC协议成为协议成为IETF标准协议标准协议n现在使用最普遍的模式和执行是现在使用最普遍的模式和

4、执行是The Open Group组织组织(前身为前身为OSF,开放式软件基金,开放式软件基金)的的分布式计算环境(分布式计算环境(DCE)nRPC的基本想法的基本想法q目的是允许程序目的是允许程序(Client)调用驻留在其他机调用驻留在其他机器上的过程器上的过程(Server)q并且使远程的过程调用看起来和本地的过程并且使远程的过程调用看起来和本地的过程调用没有区别调用没有区别nRPC的做法是引入存根(的做法是引入存根(Stub)的概念)的概念n若服务端有某个函数若服务端有某个函数fn(),为了能够被远程调用,需,为了能够被远程调用,需要通过编译器生成两个要通过编译器生成两个stub:q客

5、户端的一个客户端的一个stub:c_fn()q服务器端的一个服务器端的一个stub:s_fn()RPCRPC比比LPCLPC复杂复杂n操作系统:运行调用和被调用进程的计算操作系统:运行调用和被调用进程的计算机可能有明显不同的体系结构和数据表示机可能有明显不同的体系结构和数据表示格式;格式;n网络通信:调用进程和被调用进程间的网网络通信:调用进程和被调用进程间的网络比本地计算机有更复杂的特性。例如,络比本地计算机有更复杂的特性。例如,它可能限制消息尺寸,并且有丢失和重排它可能限制消息尺寸,并且有丢失和重排消息的可能,安全问题;消息的可能,安全问题;n编程语言:跨语言之间的互操作问题;编程语言:跨

6、语言之间的互操作问题;nStub的对要发送的参数进行的对要发送的参数进行marshal(可理解可理解成一种打包操作成一种打包操作)和对接受到的参数(或返回和对接受到的参数(或返回值)进行值)进行unmarshal(解包解包)。qMarshal操作将要发送的数据制成一种标准的格式操作将要发送的数据制成一种标准的格式(在(在DCE RPC系统中,此格式称做系统中,此格式称做Network Data Representation(NDR)格式)格式)qunmarshal再从再从NDR格式数据包中读出所需数据格式数据包中读出所需数据n该标准格式该标准格式屏蔽了计算机体系结构和数据表屏蔽了计算机体系结构

7、和数据表示格式的差异示格式的差异nClient stub的功能:的功能:q收集调用远程函数需要的参数收集调用远程函数需要的参数q将这些参数将这些参数marshal成消息,即把消息转化成标准的网成消息,即把消息转化成标准的网络数据表示络数据表示(network data representation,NDR)格格式,用于在网络上传递式,用于在网络上传递q调用客户端的运行时系统(调用客户端的运行时系统(Client runtime system)将此消息发送给服务器端。将此消息发送给服务器端。q当服务器端将结果消息返回后,将结果消息当服务器端将结果消息返回后,将结果消息unmarshal,把结果返

8、回给应用进程。把结果返回给应用进程。nServer stub的功能:的功能:q对发送给它的参数消息对发送给它的参数消息unmarshal,收集参数,收集参数q调用位于本机上的过程调用位于本机上的过程q将此过程执行的结果将此过程执行的结果marshal成消息,然后调用服务器成消息,然后调用服务器端的运行时系统将结果消息发送给客户端端的运行时系统将结果消息发送给客户端n客户端的运行系统客户端的运行系统q将客户端将客户端stub产生的消息产生的消息可靠可靠的传送给的传送给serverq利用利用TCP/UDP等协议,将消息发送到等协议,将消息发送到Servern服务端的运行时系统服务端的运行时系统q侦

9、听某个众所周知的侦听某个众所周知的socket端口,接受请求端口,接受请求q调用调用Server Stub,处理接收到的消息,处理接收到的消息n运行系统提供了可靠的数据传输运行系统提供了可靠的数据传输IDLnInterface definition file 是一个接口文件,它是一个接口文件,它应该由用户利用应该由用户利用IDL(interface definition language)语言编辑而成。语言编辑而成。nIDL是一种用来说明操作(过程或函数),操是一种用来说明操作(过程或函数),操作的参数以及数据类型的语言,它在语法上继作的参数以及数据类型的语言,它在语法上继承于承于C语言,但形

10、式上和语言,但形式上和C语言有很多不同。语言有很多不同。nIDL屏蔽了编程语言的差异屏蔽了编程语言的差异3.3 RMInRemote Method Invocation(RMI)n出现于出现于Jdk1.1(2019.02),在,在Jdk1.2中改进中改进n定位:定位:qAccess to Remote ObjectsqClient-Server ProtocolqHigh-level APIqJava-to-Java onlyqTransparentqLightweight从从RPC到到RMIn变化:变化:q从过程从过程面向对象面向对象q从函数调用从函数调用对实例的操作对实例的操作n问题:问题

11、:q动态绑定问题动态绑定问题取得实例的引用取得实例的引用q接口接口ClientSend()ServerEcho()Server_StubEcho()Server_StubEcho()objobjStub ObjectServerRemote Objectpublic interface Adder extends Remote public int add(int x,int y)throws RemoteException;Remote InterfaceRMIRegistry3.4 Session BeannRMIqStatelessq远程对象总是存在,使用者通过远程对象总是存在,使用者通

12、过naming取取得远程对象的引用得远程对象的引用q由服务提供者控制由服务提供者控制Remote Object的创建和的创建和销毁销毁n企业级应用要求企业级应用要求“远程对象远程对象”:q会话会话,管理管理(持久化持久化,生命周期生命周期),安全安全,事务事务nSession Bean:q让让remote service(即即Session Bean)实现实现javax.ejb.SessionBean接口接口q由由EJB容器容器利用利用SessionBean接口管理接口管理Session Bean的生的生命周期(初始化、销毁、钝化等)命周期(初始化、销毁、钝化等)qEJB容器截获远程调用请求,

13、将请求转发给容器截获远程调用请求,将请求转发给Session BeanqEJB容器在这个过程中插入容器在这个过程中插入/实现安全、事务和持久化等处理实现安全、事务和持久化等处理Session Bean and RMIServerContainerRemote ObjectClientEJB(1)Call.Create()(2)Call business methodsRMINaming and Diretory Service(n)(1)(n)Home StubRemote StubObjectRemote InterfaceHome Interfacejavax.ejb.SessionBea

14、nHomeObjectJNDIClientJNDIlookupEJB容器容器n在部署在部署EJB时,容器会为每个时,容器会为每个EJB:q根据根据Home接口产生接口产生Home Objectq生成生成stub和和skeletonq根据部署描述符设置安全环境、事务环境根据部署描述符设置安全环境、事务环境q在在JNDI名称空间中注册名称空间中注册EJB包括包括Home接口、资源引用等接口、资源引用等n客户端在访问客户端在访问EJB时:时:q通过通过JNDI查找到查找到Home Object的引用的引用q通过通过Home Interface上的上的create方法创建一个方法创建一个Remote

15、ObjectqHome Object会创建并返回一个会创建并返回一个Remote Objectq调用调用Remote Interface上的商业方法上的商业方法qRemote Object截取调用进行处理,然后委托截取调用进行处理,然后委托Bean Class完完成商业方法成商业方法qRemote Object截取截取Bean Class的返回进行处理,然后将结的返回进行处理,然后将结果返回给客户端果返回给客户端nBean Class在执行商业方法时可以访问容器:在执行商业方法时可以访问容器:q可以通过可以通过EJBContext对象(它是对容器的直接引用)对象(它是对容器的直接引用)请求关于

16、环境的信息:如请求关于环境的信息:如Client的身份、事务的状的身份、事务的状态以及自身的引用。态以及自身的引用。q可以通过可以通过JNDI访问资源,如访问资源,如JDBC连接、其它的连接、其它的EJB等。等。n容器在管理容器在管理EJB生命周期过程中,通过回调方法通知生命周期过程中,通过回调方法通知EJB状态的变化:状态的变化:qBean Class实现并响应这些回调方法,进行相应的处理。实现并响应这些回调方法,进行相应的处理。q不同类型的不同类型的EJB回调方法各不相同,如回调方法各不相同,如Session Bean包括:包括:ejbCreate;ejbRemove;ejbPassiva

17、te;ejbActivate。参考文献参考文献n揭开揭开Socket编程的面纱编程的面纱,goodcandles/archive/2019/12/10/294652.aspx nDistributed Systems:Concepts and Design,George Coulouris,Jean Dollimore&Tim Kindberg,1994n对分布计算系统的探究对分布计算系统的探究,wbright,2019.02 chinaitpower/A/2019-02-19/14439.html nJava Remote Method Invocation Specification,Su

18、n Microsystems,2019nJava Remote Method Invocation(RMI),Alexander Day Chaffee,2019,alexcpurpletech nEnterprise JavaBeansTM Specification,Version 2.0,Sun Microsystems,2019.8nMastering Enterprise JavaBeansTM,Ed.Roman,2019nJ2EE Course,(无法找到出处)(无法找到出处)The End!Copyright?2019 Alex Chaffee1.远程对象(远程对象(Remote

19、 Objects)nRemote ObjectsqLive on serverqAccessed as if they were localRemote Reference LayerTransport LayerJVMClient ObjectRemote Reference LayerTransport LayerJVMStubRemote ObjectSkeletonCopyright?2019 Alex Chaffeen远程接口(远程接口(Remote Interfaces)qDeclare exposed methodsqImplemented on clientqLike a pr

20、oxy for the remote objectimport java.rmi.*;public interface Adder extends Remote public int add(int x,int y)throws RemoteException;Copyright?2019 Alex Chaffee开发远程对象开发远程对象nDefine a Remote Interfaceqextends java.rmi.RemotenDefine a class that qimplements the Remote Interfaceqextends java.rmi.RemoteObj

21、ector java.rmi.UnicastRemoteObjectCopyright?2019 Alex ChaffeeRemote Class Exampleimport java.rmi.*;import java.rmi.server.*;public class AdderImpl extends UnicastRemoteObject implements Adder public AdderImpl()throws RemoteException public int add(int x,int y)throws RemoteException return x+y;Copyri

22、ght?2019 Alex Chaffee2.Stubs and SkeletonsnStub qlives on clientqpretends to be remote objectRemote Reference LayerTransport LayerJVMClient ObjectRemote Reference LayerTransport LayerJVMStubRemote ObjectSkeletonnSkeletonqlives on serverqreceives requests from stubqtalks to true remote objectqdeliver

23、s response to stubCopyright?2019 Alex ChaffeeCompiling Remote Classes(Diagram)Adder.java(interface)Adder.class(interface classfile)javacAdderImpl.java(remote class)AdderImpl.class(classfile)javacrmicAdderImpl_Skel.class(skeleton classfile)AdderImpl_Stub.class(stub classfile)Stubs和和skeletons 利用利用rmic

24、编译器产生编译器产生Copyright?2019 Alex ChaffeeRemote Interfaces and StubsRemote InterfaceStubRemote Object(Server)ClientSkeletonimplementsimplementsnStub和和skeleton类是在运行时确定,并动态类是在运行时确定,并动态加载的加载的nStub的职责:发起对远程对象的调用的职责:发起对远程对象的调用(通过调通过调用用remote reference layer)qMarshaling arguments to a marshal stream(employ a

25、mechanism called object serialization)qInforming the remote reference layer that the call should be invoked.qUnmarshaling the return value or exception from a marshal stream.qInforming the remote reference layer that the call is complete.nThe skeleton is responsible for:qUnmarshaling arguments from

26、the marshal stream.qMaking the up-call to the actual remote object implementation.qMarshaling the return value of the call or an exception(if one occurred)onto the marshal stream.Copyright?2019 Alex Chaffee3.Remote Reference Layern提供了提供了RemoteRef对象,代表远程服务实现的链对象,代表远程服务实现的链接接(指出引用了哪个远程对象指出引用了哪个远程对象)nS

27、tub对象利用对象利用 RemoteRef的的invoke()方法传递方方法传递方法调用法调用nremote reference layer和底层的传输接口交互和底层的传输接口交互Remote Reference LayerTransport LayerJVMClient ObjectRemote Reference LayerTransport LayerJVMStubRemote ObjectSkeletonCopyright?2019 Alex Chaffee4.Transport LayernDeals with communicationsnConnection management

28、nDispatching messages between stub and skeletonnDistributed Garbage CollectionnSits on top of javaRemote Reference LayerTransport LayerJVMClient ObjectRemote Reference LayerTransport LayerJVMStubRemote ObjectSkeletonnRMI系统传输层的职责:系统传输层的职责:q设置到远程地址空间的连接设置到远程地址空间的连接q管理连接管理连接q监控连接状态(监控连接状态(“liveness.”)q

29、侦听调用请求侦听调用请求q维护地址空间内的远程对象列表维护地址空间内的远程对象列表q设置调用请求的连接设置调用请求的连接q定位远程调用目标对象的分配器(定位远程调用目标对象的分配器(dispatcher),),将连接传给该分配器将连接传给该分配器Copyright?2019 Alex Chaffee5.Registriesn命名和查找远程对象命名和查找远程对象n服务器可以注册它们的对象服务器可以注册它们的对象n客户端可以发现服务对象并且获取远程引用客户端可以发现服务对象并且获取远程引用n 注册器是运行在主机上的进程注册器是运行在主机上的进程RMI RegistrynRMI包含了一个简单的目录服

30、务,称为包含了一个简单的目录服务,称为RMI Registry,它它q运行在每个有远程服务对象的主机上运行在每个有远程服务对象的主机上q接受服务查询请求,缺省端口是接受服务查询请求,缺省端口是1099.(object servers will be dynamically assigned ports by the RMI runtime)q支持支持stub代码的动态下载代码的动态下载使用使用RMI RegistrynServer-sideq创建一个实现远程服务的本地对象创建一个实现远程服务的本地对象q导出该对象给导出该对象给RMI(创建一个侦听服务,等待客户创建一个侦听服务,等待客户端的连接

31、端的连接).q用一个公开的名称,将该对象注册到用一个公开的名称,将该对象注册到RMI Registry中中nClient-sideq通过通过java.rmi.Naming 静态类访问静态类访问RMI Registryq使用方法使用方法lookup()查询注册器,参数是查询注册器,参数是URL:rmi:/:/该方法返回服务对象的远程引用该方法返回服务对象的远程引用Copyright?2019 Alex ChaffeeRMI例子例子nRMI系统由以下几个部分组成:系统由以下几个部分组成:q远程服务的接口定义远程服务的接口定义(Remote Interface)q远程服务的实现远程服务的实现(Rem

32、ote Service)qStub和和Skeleton文件文件qRMI命名服务,使得客户端可以发现远程服务命名服务,使得客户端可以发现远程服务q运行远程服务的服务器运行远程服务的服务器q需要远程服务的客户端程序需要远程服务的客户端程序nRMI编程编程q编写并编译接口的编写并编译接口的Java代码代码(adder.java)q编写并编写并编译编译实现类的实现类的Java代码代码q利用利用RMIC从实现类产生从实现类产生Stub和和Skeleton类文件类文件q启动注册服务启动注册服务q编写远程服务主机编写远程服务主机(host)程序的程序的Java代码代码,运行之运行之q开发开发RMI客户端程序

33、的客户端程序的Java代码代码,运行之运行之小结小结n从从RPC到到RMIq增加了增加了Interface,对应于,对应于DCE RPC中的中的IDLq编译之后得到的是编译之后得到的是stub+skeletonq增加了对象的创建增加了对象的创建(服务器服务器)q增加了:注册和检索增加了:注册和检索Session Bean和和Container的的契约契约nBean提供者在提供者在EJB类中实现业务方法类中实现业务方法n容器提供者将客户端的函数调用委派给容器提供者将客户端的函数调用委派给EJB的函的函数数nBean提供者提供者ejbCreate,ejbPostCreate和和 ejbRemove

34、n容器提供者在容器提供者在EJB对象创建、移除和查找的时候对象创建、移除和查找的时候调用这些方法调用这些方法nBean提供者定义提供者定义EJB home和业务接口和业务接口n容器提供者提供实现这些接口的类容器提供者提供实现这些接口的类nBean提供者实现提供者实现javax.ejb.SessionBean(以以及可选的及可选的javax.ejb.SessionSynchronization)接口中定义的容器回调函数接口中定义的容器回调函数n容器应该在合适的时间调用这些回调函数。容器应该在合适的时间调用这些回调函数。n容器提供者提供容器提供者提供javax.ejb.SessionContext

35、接口接口给会话给会话Bean实例。该接口使得实例能够从容器得实例。该接口使得实例能够从容器得到上下文信息到上下文信息nThe requirement for the Container to provide to the bean instances the JNDI context that contains the enterprise beans environment.n容器为容器为EJB实例管理事务、安全、异常。实例管理事务、安全、异常。nBean提供者在编程时应该避免破坏容器对提供者在编程时应该避免破坏容器对EJB实实例的运行时管理。例的运行时管理。EJB的特征的特征n通常包含业务逻辑,处理业务数据通常包含业务逻辑,处理业务数据.nEJB的实例由容器在运行时创建和管理的实例由容器在运行时创建和管理nEJB可以在部署时定制可以在部署时定制n不同的服务信息(例如安全、事务)与不同的服务信息(例如安全、事务)与EJB类类是分开的。这使得可以在应用装配和部署的时是分开的。这使得可以在应用装配和部署的时候通过工具管理服务信息候通过工具管理服务信息n客户端的访问由部署了客户端的访问由部署了EJB的容器间接传递给的容器间接传递给该该EJB。谢谢

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(J2EE教程第3章SessionBean课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|