RMI长途要领挪用讲授教程
副标题#e#
RMI长途要领挪用讲授教程
1、RMI概述
RMI(Remote Method Invocation)
RMI是漫衍式工具软件包,它简化了在多台计较机上的JAVA应用之间的通信。
必需在jdk1.1以上
RMI用到的类
java.rmi.Remote
所有可以被长途挪用的工具都必需实现该接口
java.rmi.server.UnicastRemoteObject
所有可以被长途挪用的工具都必需扩展该类
什么是RMI
长途要领挪用是一种计较机之间工具相互挪用对方函数,启动对方历程的一 种机制,利用这种机制,某一台计较机上的工具在挪用别的一台计较机上的要领 时,利用的程
序语礼貌则和在当地机上工具间的要领挪用的语礼貌则一样。
利益
这种机制给漫衍计较的系统设计、编程都带来了极大的利便。
只要凭据RMI法则设计措施,可以不必再干涉在RMI之下的网络细节了,如: TCP和Socket等等。
任意两台计较机之间的通讯完全由RMI认真。挪用长途计较机上的工具就像本 地工具一样利便。
1、面向工具:
RMI可将完整的工具作为参数和返回值举办通报,而不只仅是预界说的数据类 型。
也就是说,可以将雷同Java哈西表这样的巨大范例作为一个参数举办通报。
2、可移动属性:
RMI可将属性从客户机移动随处事器,可能从处事器移动到客户机。
3、设计方法:
工具通报成果使您可以在漫衍式计较中充实操作面向工具技能的强大成果, 如二层和三层布局系统。
假如用户可以或许通报属性,那么就可以在本身的办理方案中利用面向工具的设 计方法。
所有面向工具的设计方法无不依靠差异的属性来发挥成果,假如不能通报完 整的工具——包罗实现和范例
——就会失去设计方法上所提供的利益。
#p#副标题#e#
4、安详性:
RMI利用Java内置的安详机制担保下载执行措施时用户系统的安详。
RMI利用专门为掩护系统免遭恶意小措施侵害而设计的安详打点措施。
5、便于编写和利用
RMI使得Java长途处事措施和会见这些处事措施的Java客户措施的编写事情变 得轻松、简朴。
长途接话柄际上就是Java接口。
为了实现RMI的成果必需建设长途工具任何可以被长途挪用的工具必需实现远 程接口。但长途
接口自己并不包括任何要领。因而需要建设一个新的接口来扩展长途接口。
新接口将包括所有可以长途挪用的要领。长途工具必需实现这个新接口,由 于新的接口扩展了
长途接口,实现了新接口,就满意了长途工具对实现长途接口的要求,所实 现的每个工具都将
作为长途工具引用。
建设长途要领挪用的5个步调:
1、界说一个长途接口的接口,该接口中的每一个要领必需声明它将发生一个 RemoteException异常。
2、界说一个实现该接口的类。
3、利用RMIC措施生生长途实现所需的残根和框架。
4、建设一个客户措施和处事器举办RMI挪用。
5、启动Registry并运行本身的长途处事器和客户措施。
第一步、扩展长途接口
建设一个RMI措施首先要做的就是建设一个扩展长途接口的接口。在这个接口 中可以添加任意但愿能在
长途呆板上挪用的要领。
接口示例
import java.rmi.Remote;
import.java.rmi.RemoteException;
public interface RemoteInterface extends java.rmi.Remote
{
public String start(String msg) throws RemoteException;
}
在接口中界说了一个返回字符串的要领
当地接口(RemoteInterface)必需是民众的,不然客户机在加载一个实现该接 口的长途工具时就会堕落。
它必需从java.rmi.Remote担任而来,接口中的每一个要领都必需抛出长途异 常java.rmi.RemoteException。
抛出这个异常的原因
由于任何长途要领挪用实际上要举办很多初级网络操纵,因此网络错误大概 在挪用进程中随时产生。
因此,所有的RMI操纵都应放到try-catch块中。
第二步、界说一个实现该接口的类。
该类必需担任UnicastRemoteObject类。
扩展java.rmi.server.UnicastRemoteObject
UnicastRemoteObject顾名思义,是让客户机与处事器工具实例成立一对一的 毗连。
扩展实现接口的类例程
处事器要害语句
Naming.rebind("/RMITest",rmiTest);
//名字和接口绑定
第三步、生成残根和框架代码
在RMI中,客户机上生成的更换挪用参数和反更换返回值的代码称为残根。有 的书上称这部门代码为“骨干”。
处事器上生成的反更换挪用参数和举办实际要领挪用更换返回值的代码称为 框架。
生成残根和框架的东西
Rmic呼吁行东西(RMI Compiler)
名目:
Rmic classname
第四步、建设一个客户措施举办RMI挪用
#p#分页标题#e#
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.net.MalformedURLException;
public class RemoteClientTest{
static RemoteInterface gserver=null;
void display(){
try{//查找长途工具
gserver=(RemoteInterface)Naming.lookup("//localhost/RMITest");
String msg=gserver.start();
System.out.println("处事器返复书息:"+msg);}
catch (Exception e1) {System.out.println(e1);}
}
public static void main (String[] args){
RemoteClientTest app=new RemoteClientTest();
app.display();}
}
客户端端要害语句
gserver=(RemoteInterface)Naming.lookup("//localhost/RMITest");
//查找长途工具
第五步、用RmiRegistry找到长途工具
这是一个利用东西,维护文本名和长途工具之间的映射,可以举办长途会见 。
文章来历:http://useway.blog.51cto.com/736087/149172