书签 分享 收藏 举报 版权申诉 / 58
上传文档赚钱

类型J2EE教程第3章SessionBean课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:5191987
  • 上传时间:2023-02-16
  • 格式:PPT
  • 页数:58
  • 大小:981KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《J2EE教程第3章SessionBean课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    J2EE 教程 SessionBean 课件
    资源描述:

    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。谢谢

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:J2EE教程第3章SessionBean课件.ppt
    链接地址:https://www.163wenku.com/p-5191987.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


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

    163文库