欢迎来到天天文库
浏览记录
ID:49287261
大小:481.50 KB
页数:18页
时间:2020-02-03
《Java网络编程技术-07(修改).ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第7章JavaRMI网络编程RMI(RemoteMethodInvocation)为远程方法调用,是允许运行在一个Java虚拟机的对象调用运行在另一个Java虚拟机上的对象的方法。这两个虚拟机可以是运行在相同计算机上的不同进程中,也可以是运行在网络上的不同计算机中。远程过程调用(RemoteProcedureCall,RPC)可以用于一个进程调用另一个进程(很可能在另一个远程主机上)中的过程,从而提供了过程的分布能力。Java的RMI则在RPC的基础上向前又迈进了一步,即提供分布式对象间的通讯。7.1JavaRMI27.2RMI的应用RMI的用途是为分布式Java应用程序
2、之间的远程通信提供服务,提供分布式服务。目前主要应用时封装在各个J2EE项目框架中,例如Spring,EJB(Spring和EJB均封装了RMI技术)在Spring中实现RMI(具体代码见最后一页)①在服务器端定义服务的接口,定义特定的类实现这些接口;②在服务器端使用org.springframework.remoting.rmi.RmiServiceExporter类来注册服务;③在客户端使用org.springframework.remoting.rmi.RmiProxyFactoryBean来实现远程服务的代理功能;④在客户端定义访问与服务器端服务接口相同的类37.
3、3RMI的局限RMI目前使用Java远程消息交换协议JRMP(JavaRemoteMessagingProtocol)进行通信。JRMP是专为Java的远程对象制定的协议,由于JRMP是专为Java对象制定的,因此,RMI对于用非Java语言开发的应用系统的支持不足。不能与用非Java语言书写的对象进行通信(意思是只支持客户端和服务器端都是Java程序的代码的远程调用)。47.4RMI应用程序的基本模型本地对象本地对象本地对象RMI客户端程序远程对象远程对象服务器端程序5当调用远程对象上的方法时,客户机除了可以将原始类型的数据作为参数一外,还可以将对象作为参数来传递,与之
4、相对应的是返回值,可以返回原始类型或对象,这些都是通过Java的对象序列化(serialization)技术来实现的。(换而言之:参数或者返回值如果是对象的话必须实现Serializable接口)7.5RMI调用远程方法的参数和返回值6JavaRMIClientServer对象A远程接口B远程对象BB的代理:存根(stub)远程引用层RRL通信模块远程方法调用返回值B的代理:主干(skeleton)远程引用层RRLJavaRMI架构通信模块命名服务注册对象B引用远程对象B引用7一般RMI概念服务器:远程接口B:列出了可以远程调用的所有方法;远程对象B:实现远程接口B的类实
5、例化对象;主干(skeleton):将客户端发送的参数反向序列化并调用远程对象上所需方法。方法返回,获得返回值并序列化发送回服务器通信模块。远程引用层(RRL):为远程对象B创建一个远程对象引用。同时维护远程对象与其引用之间的映射。客户端:存根(stub):以远程对象B的引用(唯一标识)、远程接口B方法描述来构造一个代理对象;远程引用层(RRL):远程对象B的引用到达RRL时,生成stub,并维护远程对象B的引用与stub之间的映射。8配置远程方法调用-1使用RMI创建C/S应用程序的步骤:服务器端:①定义远程接口,继承Remote接口(java.rmi包),其声明远程调
6、用的方法,每一方法必须声明抛出RemoteException异常。②编写实现远程接口的类(服务器类),该类的对象就是远程对象。ⅰ实现远程接口ⅱ继承服务器类:java.rmi.server.UnicastRemoteObject③使用rmic工具,将上述服务器类生成存根和主干rmic–v1.2服务器类④编写一个主类,实例化服务器类,生成远程对象,并且向注册库命名注册远程对象,利用java.rmi.Naming的方法:publicstaticvoidbind(Stringname,Remoteobj)publicstaticvoidrebind(Stringname,Remo
7、teobj)9配置远程方法调用-2使用RMI创建C/S应用程序的步骤:客户端:①编写客户机类,调用远程对象上的方法。利用java.rmi.Naming的方法:publicstaticRemotelookup(Stringname)注意:name以URL格式给出:rmi://:/(port默认1099)②启动注册库startrmiregistry[port]③运行服务端主类,创建远程对象并向注册库注册该对象引用。④运行客户机。10RMIC/S应用举例ClientSer
此文档下载收益归作者所有