已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 21838.5-2025金属材料硬度和材料参数的仪器化压入试验第5部分:线弹性动态仪器化压入试验(DIIT)
- 公司辐射环境监测员职业健康技术规程
- 石油焦煅烧工成果水平考核试卷含答案
- 糖坯制造工现场作业技术规程
- 芯片装架工岗位设备技术规程
- 公司脱酚工工艺作业技术规程
- 痛经常见症状及护理方法指导
- 定向闯关拓展训练
- 2025年改则县中小学教师招聘笔试参考试题及答案解析
- 2025年渝中区江北区教师招聘考试参考题库及答案解析
- 杂物电梯施工方案(3篇)
- 生鲜供货协议书合同范本
- 2025年6月黑吉辽蒙高考地理真题完全解读
- 美容整形注射管理制度
- 煤矿工人井下封闭心理建设
- 布拖县奔诚矿业有限责任公司12万吨-年交际河萤石矿开采项目环评报告
- 国家职业标准-电力电气设备安装工 (试行) (2024 年版)
- 租女友过年协议书
- (高清版)DG∕TJ 08-202-2020 钻孔灌注桩施工标准
- 政采云合同模板
- 2025年春季学期学校团委工作计划(附团委工作安排表)
评论
0/150
提交评论