J2EE教程第3章 Session Bean.ppt

上传人:sccc 文档编号:5735685 上传时间:2023-08-15 格式:PPT 页数:57 大小:1.07MB
返回 下载 相关 举报
J2EE教程第3章 Session Bean.ppt_第1页
第1页 / 共57页
J2EE教程第3章 Session Bean.ppt_第2页
第2页 / 共57页
J2EE教程第3章 Session Bean.ppt_第3页
第3页 / 共57页
J2EE教程第3章 Session Bean.ppt_第4页
第4页 / 共57页
J2EE教程第3章 Session Bean.ppt_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《J2EE教程第3章 Session Bean.ppt》由会员分享,可在线阅读,更多相关《J2EE教程第3章 Session Bean.ppt(57页珍藏版)》请在三一办公上搜索。

1、声明,本课件仅用于北京航空航天大学计算机学院的教学;本课件修改采用了一些网络资源(论文、研究报告、技术报告等),在采用的时候并没有准确标注引用信息。,J2EE教程第3章 Session Bean,分布式系统:程序运行在不同的地址空间(通常是不同的主机上)进程之间的通信是分布式系统的一个基本问题,程序A,程序B,内容提要,3.1 SOCKET3.2 RPC3.3 RMI3.4 Session Bean3.5 小结,3.1 SOCKET,Socket 是一个基本的通信机制Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。Socket把复杂的TCP/IP协议族隐藏在Sock

2、et接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。,优势:功能强大挑战:过于底层,涉及一套复杂的流程,要求每个应用的客户端和服务器端都参与到一套复杂的应用层协议中;程序代码量多,容易出错且难以调试。,3.2 RPC,最初由 Sun 微系统提出 RFC(1984年Birrell和Nelson的一篇论文中提出?),并应用于Unix系统IETF ONC 宪章重新修订了Sun版本,使得ONC RPC协议成为IETF标准协议现在使用最普遍的模式和执行是The Open Group组织(前身为OSF,开放式软件基金)的分布式计算环境(DCE),RPC的基本想法目

3、的是允许程序(Client)调用驻留在其他机器上的过程(Server)并且使远程的过程调用看起来和本地的过程调用没有区别RPC的做法是引入存根(Stub)的概念,若服务端有某个函数fn(),为了能够被远程调用,需要通过编译器生成两个stub:客户端的一个stub:c_fn()服务器端的一个stub:s_fn(),RPC比LPC复杂,操作系统:运行调用和被调用进程的计算机可能有明显不同的体系结构和数据表示格式;网络通信:调用进程和被调用进程间的网络比本地计算机有更复杂的特性。例如,它可能限制消息尺寸,并且有丢失和重排消息的可能,安全问题;编程语言:跨语言之间的互操作问题;,Stub的对要发送的参

4、数进行marshal(可理解成一种打包操作)和对接受到的参数(或返回值)进行unmarshal(解包)。Marshal操作将要发送的数据制成一种标准的格式(在DCE RPC系统中,此格式称做Network Data Representation(NDR)格式)unmarshal再从NDR格式数据包中读出所需数据该标准格式屏蔽了计算机体系结构和数据表示格式的差异,Client stub的功能:收集调用远程函数需要的参数将这些参数marshal成消息,即把消息转化成标准的网络数据表示(network data representation,NDR)格式,用于在网络上传递调用客户端的运行时系统(Cl

5、ient runtime system)将此消息发送给服务器端。当服务器端将结果消息返回后,将结果消息unmarshal,把结果返回给应用进程。Server stub的功能:对发送给它的参数消息unmarshal,收集参数调用位于本机上的过程将此过程执行的结果marshal成消息,然后调用服务器端的运行时系统将结果消息发送给客户端,客户端的运行系统将客户端stub产生的消息可靠的传送给server利用TCP/UDP等协议,将消息发送到Server服务端的运行时系统侦听某个众所周知的socket端口,接受请求调用Server Stub,处理接收到的消息运行系统提供了可靠的数据传输,IDL,Int

6、erface definition file 是一个接口文件,它应该由用户利用IDL(interface definition language)语言编辑而成。IDL是一种用来说明操作(过程或函数),操作的参数以及数据类型的语言,它在语法上继承于C语言,但形式上和C语言有很多不同。IDL屏蔽了编程语言的差异,3.3 RMI,Remote Method Invocation(RMI)出现于Jdk1.1(1997.02),在Jdk1.2中改进定位:Access to Remote ObjectsClient-Server ProtocolHigh-level APIJava-to-Java onl

7、yTransparentLightweight,从RPC到RMI,变化:从过程面向对象从函数调用对实例的操作问题:动态绑定问题取得实例的引用接口,ClientSend(),ServerEcho(),Server_StubEcho(),Server_StubEcho(),obj,obj,Stub Object,Server,Remote Object,public interface Adder extends Remote public int add(int x,int y)throws RemoteException;,Remote Interface,RMIRegistry,3.4 Se

8、ssion Bean,RMIStateless远程对象总是存在,使用者通过naming取得远程对象的引用由服务提供者控制Remote Object的创建和销毁企业级应用要求“远程对象”:会话,管理(持久化,生命周期),安全,事务,Session Bean:让remote service(即Session Bean)实现javax.ejb.SessionBean接口由EJB容器利用SessionBean接口管理Session Bean的生命周期(初始化、销毁、钝化等)EJB容器截获远程调用请求,将请求转发给Session BeanEJB容器在这个过程中插入/实现安全、事务和持久化等处理,Sess

9、ion Bean and RMI,Server,Container,Remote Object,Client,EJB,(1)Call.Create(),(2)Call business methods,RMI,Naming and Diretory Service,(n),(1),(n),Home Stub,Remote Stub,Object,Remote Interface,Home Interface,javax.ejb.SessionBean,Client,EJB容器,在部署EJB时,容器会为每个EJB:根据Home接口产生Home Object生成stub和skeleton根据部署描

10、述符设置安全环境、事务环境在JNDI名称空间中注册EJB包括Home接口、资源引用等,客户端在访问EJB时:通过JNDI查找到Home Object的引用通过Home Interface上的create方法创建一个Remote ObjectHome Object会创建并返回一个Remote Object调用Remote Interface上的商业方法Remote Object截取调用进行处理,然后委托Bean Class完成商业方法Remote Object截取Bean Class的返回进行处理,然后将结果返回给客户端,Bean Class在执行商业方法时可以访问容器:可以通过EJBConte

11、xt对象(它是对容器的直接引用)请求关于环境的信息:如Client的身份、事务的状态以及自身的引用。可以通过JNDI访问资源,如JDBC连接、其它的EJB等。,容器在管理EJB生命周期过程中,通过回调方法通知EJB状态的变化:Bean Class实现并响应这些回调方法,进行相应的处理。不同类型的EJB回调方法各不相同,如Session Bean包括:ejbCreate;ejbRemove;ejbPassivate;ejbActivate。,参考文献,揭开Socket编程的面纱,http:/Distributed Systems:Concepts and Design,George Coulou

12、ris,Jean Dollimore&Tim Kindberg,1994对分布计算系统的探究,wbright,2002.02 http:/Java Remote Method Invocation Specification,Sun Microsystems,1997Java Remote Method Invocation(RMI),Alexander Day Chaffee,1997,Enterprise JavaBeansTM Specification,Version 2.0,Sun Microsystems,2001.8Mastering Enterprise JavaBeansTM

13、,Ed.Roman,2002J2EE Course,(无法找到出处),The End!,Copyright?1997 Alex Chaffee,1.远程对象(Remote Objects),Remote ObjectsLive on serverAccessed as if they were local,Copyright?1997 Alex Chaffee,远程接口(Remote Interfaces)Declare exposed methodsImplemented on clientLike a proxy for the remote object,import java.rmi.

14、*;public interface Adder extends Remote public int add(int x,int y)throws RemoteException;,Copyright?1997 Alex Chaffee,开发远程对象,Define a Remote Interfaceextends java.rmi.RemoteDefine a class that implements the Remote Interfaceextends java.rmi.RemoteObjector java.rmi.UnicastRemoteObject,Copyright?1997

15、 Alex Chaffee,Remote Class Example,import 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;,Copyright?1997 Alex Chaffee,2.Stubs and Skeletons,S

16、tub lives on clientpretends to be remote object,Skeletonlives on serverreceives requests from stubtalks to true remote objectdelivers response to stub,Copyright?1997 Alex Chaffee,Compiling Remote Classes(Diagram),Adder.java(interface),Adder.class(interface classfile),javac,AdderImpl.java(remote clas

17、s),AdderImpl.class(classfile),javac,rmic,AdderImpl_Skel.class(skeleton classfile),AdderImpl_Stub.class(stub classfile),Stubs和skeletons 利用rmic编译器产生,Copyright?1997 Alex Chaffee,Remote Interfaces and Stubs,Stub和skeleton类是在运行时确定,并动态加载的,Stub的职责:发起对远程对象的调用(通过调用remote reference layer)Marshaling arguments t

18、o a marshal stream(employ a mechanism called object serialization)Informing the remote reference layer that the call should be invoked.Unmarshaling the return value or exception from a marshal stream.Informing the remote reference layer that the call is complete.,The skeleton is responsible for:Unma

19、rshaling arguments from the marshal stream.Making the up-call to the actual remote object implementation.Marshaling the return value of the call or an exception(if one occurred)onto the marshal stream.,Copyright?1997 Alex Chaffee,3.Remote Reference Layer,提供了RemoteRef对象,代表远程服务实现的链接(指出引用了哪个远程对象)Stub对象

20、利用 RemoteRef的invoke()方法传递方法调用remote reference layer和底层的传输接口交互,Copyright?1997 Alex Chaffee,4.Transport Layer,Deals with communicationsConnection managementDispatching messages between stub and skeletonDistributed Garbage CollectionSits on top of,RMI系统传输层的职责:设置到远程地址空间的连接管理连接监控连接状态(“liveness.”)侦听调用请求维护

21、地址空间内的远程对象列表设置调用请求的连接定位远程调用目标对象的分配器(dispatcher),将连接传给该分配器,Copyright?1997 Alex Chaffee,5.Registries,命名和查找远程对象服务器可以注册它们的对象客户端可以发现服务对象并且获取远程引用 注册器是运行在主机上的进程,RMI Registry,RMI包含了一个简单的目录服务,称为RMI Registry,它运行在每个有远程服务对象的主机上接受服务查询请求,缺省端口是1099.(object servers will be dynamically assigned ports by the RMI runt

22、ime)支持stub代码的动态下载,使用RMI Registry,Server-side创建一个实现远程服务的本地对象导出该对象给RMI(创建一个侦听服务,等待客户端的连接).用一个公开的名称,将该对象注册到RMI Registry中,Client-side通过java.rmi.Naming 静态类访问RMI Registry使用方法lookup()查询注册器,参数是URL:rmi:/:/该方法返回服务对象的远程引用,Copyright?1997 Alex Chaffee,RMI例子,RMI系统由以下几个部分组成:远程服务的接口定义(Remote Interface)远程服务的实现(Remot

23、e Service)Stub和Skeleton文件RMI命名服务,使得客户端可以发现远程服务运行远程服务的服务器需要远程服务的客户端程序,RMI编程编写并编译接口的Java代码(adder.java)编写并编译实现类的Java代码利用RMIC从实现类产生Stub和Skeleton类文件启动注册服务编写远程服务主机(host)程序的Java代码,运行之开发RMI客户端程序的Java代码,运行之,小结,从RPC到RMI增加了Interface,对应于DCE RPC中的IDL编译之后得到的是stub+skeleton增加了对象的创建(服务器)增加了:注册和检索,Session Bean和Contai

24、ner的契约,Bean提供者在EJB类中实现业务方法容器提供者将客户端的函数调用委派给EJB的函数Bean提供者ejbCreate,ejbPostCreate和 ejbRemove容器提供者在EJB对象创建、移除和查找的时候调用这些方法,Bean提供者定义EJB home和业务接口容器提供者提供实现这些接口的类Bean提供者实现javax.ejb.SessionBean(以及可选的javax.ejb.SessionSynchronization)接口中定义的容器回调函数容器应该在合适的时间调用这些回调函数。,容器提供者提供javax.ejb.SessionContext接口给会话Bean实例。

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

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号