




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第九章,代理模式-分布式计算,2,回顾,状态模式允许一个对象基于内部状态而拥有不同的行为通过将每个状态封装进一个类,我们把以后需要做的任何改变局部化了状态转换可以由State类或Context类控制使用状态模式通常会导致设计类的数目增加,3,目标,理解本地计算与分布式计算分布计算角色与机制远程方法调用(RemoteMethodInvocation)RMI配置远程方法调用远程方法中的参数传递RMI与CORBA区别,4,本地计算与分布计算,本地计算:组件共享一个公共的地址空间进行通信。分布计算:组件调用不同机器上的地址空间的组件进行通信。,JVM,组件,JVM,JVM,本地计算,分布计算,5,分布计算,分布计算角色:客户与服务器分布计算机制:客户端以常规的方式进行方法调用,无须操心数据在网络上传输或者解析响应之类的问题。提供服务的对象可能不在同一个虚拟机内,甚至可能不是Java语言实现的对象。在客户端为服务器对象安装一个代理(proxy),客户调用此代理进行常规方法调用。客户端代理负责与服务器进行联系。在服务器端安装第二个代理对象。该服务器代理与客户端代理进行通信,以常规方式调用服务器对象上的方法。,client,Server,发送请求数据,返回响应数据,在客户端与服务器之间传递对象,6,client,proxy,proxy,server,调用本地代理,发送请求数据,调用本地服务方法,返回方法结果,返回响应数据,返回方法结果,RMI,CORBA,SOAP,7,RMI、CORBA与SOAP,三种通信技术:RMI:Java的远程方法调用技术,支持Java的分布式对象之间的方法调用;CORBA:通用对象请求代理架构,支持任何编程语言编写的对象之间的方法调用,使用InternetInter-ORB协议(IIOP)支持对象间通信;SOAP:简单对象访问协议,使用基于XML的传输格式。,8,JavaRMI,Client,Server,对象A,远程接口B,远程对象B,B的代理:存根(stub),远程引用层RRL,通信模块,远程方法调用,返回值,B的代理:主干(skeleton),远程引用层RRL,JavaRMI架构,通信模块,命名服务注册,对象B引用,远程对象B引用,9,一般RMI概念,服务器:远程接口B:列出了可以远程调用的所有方法;远程对象B:实现远程接口B的类实例化对象;主干(skeleton):将客户端发送的参数反向序列化并调用远程对象上所需方法。方法返回,获得返回值并序列化发送回服务器通信模块。远程引用层(RRL):为远程对象B创建一个远程对象引用。同时维护远程对象与其引用之间的映射。客户端:存根(stub):以远程对象B的引用(唯一标识)、远程接口B方法描述来构造一个代理对象;远程引用层(RRL):远程对象B的引用到达RRL时,生成stub,并维护远程对象B的引用与stub之间的映射。,10,配置远程方法调用-1,使用RMI创建C/S应用程序的步骤:服务器端:定义远程接口,继承Remote接口(java.rmi包),其声明远程调用的方法,每一方法必须声明抛出RemoteException异常。编写实现远程接口的类(服务器类),该类的对象就是远程对象。实现远程接口继承服务器类:java.rmi.server.UnicastRemoteObject使用rmic工具,将上述服务器类生成存根和主干rmicv1.2服务器类编写一个主类,实例化服务器类,生成远程对象,并且向注册库命名注册远程对象,利用java.rmi.Naming的方法:publicstaticvoidbind(Stringname,Remoteobj)publicstaticvoidrebind(Stringname,Remoteobj),11,配置远程方法调用-2,使用RMI创建C/S应用程序的步骤:客户端:编写客户机类,调用远程对象上的方法。利用java.rmi.Naming的方法:publicstaticRemotelookup(Stringname)注意:name以URL格式给出:rmi:/:/(port默认1099)启动注册库startrmiregistryport运行服务端主类,创建远程对象并向注册库注册该对象引用。运行客户机。,12,RMIC/S应用举例,Client,Server,调用远程方法sayHello(),返回结果:”HelloClient”,Step1:定义远程接口,HelloInterface.java,13,RMIC/S应用举例,Step2:编写服务器类HelloImplementor,实现远程接口HelloInterface,14,RMIC/S应用举例,Step3:生成stub和skeleton:rmicv1.2testrmi.HelloImplementor,Step4:编写一个主类HelloHelper,实例化服务器类HelloImplementor,生成远程对象,并且向注册库命名注册远程对象,15,RMIC/S应用举例,Step5:编写客户机类,调用远程对象上的方法,16,演示,startrmiregistry运行注册库,17,远程方法中的参数传递,传递非远程对象将对象传递给本地方法,传递的只是对象的引用。将非远程对象传递给远程方法,传递的只是对象的拷贝,非远程客户信息对象,Client,Server,Customer,调用远程方法find,参数Customer对象,返回结果,比较客户端非远程对象信息在远程方法调用前后是否一样,18,远程方法中的非远程对象传递,19,远程方法中的非远程对象传递,20,远程方法中的非远程对象传递,21,演示,22,远程方法中的参数传递,传递远程对象将远程对象传递给远程方法,那么远程方法接收到的是一个存根对象.,collage,student,Server,Client,调用远程方法add,传递远程对象student,返回结果,Stub对象,23,远程方法中远程对象传递,24,远程方法中远程对象传递,25,远程方法中远程对象传递,26,演示,27,RMI与CORBA,与RMI不同,CORBA允许Java对象与其他语言编写的对象之间进行相
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 节约用水宣传片课件
- 2025年外贸业务员中级求职面试模拟题及答案
- 2025年初学入门遗体整容技术模拟考试题及答案解析
- 2025年大学物理课程难点突破及预测试题
- (2025年标准)股权委托代理协议书
- 2025年数据库管理与应用中级考试模拟题及答案详解资源包
- 2024-2025年部编版六年级语文上册阅读指导计划
- (2025年标准)股东收回协议书
- (2025年标准)股东代签协议书
- 2025年计算机系统架构师认证考试模拟题及解析
- 推广服务合同范例
- 《分红保险的魅力》课件
- 住建局条文解读新规JGJT46-2024《施工现场临时用电安全技术标准》
- 叉车装卸货合同范例
- 电力设备运行与维护管理手册
- 工程审计课程设计
- 附件2:慢病管理中心评审实施细则2024年修订版
- 食品安全制度管理目录
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蚀工程施工及验收规范
- 医院科研诚信课件
- 小学校园安全知识
评论
0/150
提交评论