关系疑问的什么是RMI RMI 远程方法调用 (关系问句)
本文目录导航:
远程方法调用(RMI)关系疑问的什么是RMI?
Java远程方法调用(JavaRMI)是JavaAPI对远程环节调用(RPC)提供的面向对象的等价方式,允许间接传输序列化的Java对象和散布式渣滓回收。
远程方法调用可以看做是激活远程正在运转的对象上的方法的步骤。
RMI对调用者是位置透明的,由于调用者觉得方法是口头在本地运转的对象上的。
经过RMI 失掉准确期间
间接上代码 比着写一遍就懂了
接口:
网吧远程调用
一、Java中的远程方法调用 远程方法调用(Remote Method Invocation, RMI)是Java1.1引入的散布式对象软件包,它的发生简化了在多台机器上的Java运行之间的通讯。
相比CORBA,RMI配置较弱且只能用于Java系统。
二、成功一个便捷的RMI 要经常使用RMI,必定结构四个重要的类:远程对象的本地接口、RMI客户、远程对象成功和RMI主机。
RMI主机生成远程对象成功的一个实例,并用一个不凡的URL注册它,RMI客户在远程主机上查找对象,若找到就把它转换老本地接口类型,而后像一个本地对象一样经常使用它。
上方是一个便捷的RMI例子,远程对象只前往一个信息字符串。
要使这个例子更有价值,咱们须要做的就是完善远程对象成功类。
1.远程对象的本地接口类() 该类仅仅是一个接口,而不是成功,RMI客户机可以间接经常使用它,RMI主机必定经过一个远程对象来成功它,并用某个URL注册它的一个实例。
import .*; public interface Rem extends Remote { public String getMessage() throws RemoteException;} 本地接口(Rem)必定是公共的,否则客户机在加载一个成功该接口的远程对象时就会出错。
此外,它还必定从承袭而来,接口中的每一个方法都必定抛出远程意外。
客户类() RMI客户经常使用在指定的远程主机上查找对象,若找到就把它转换老本地接口Rem类型,而后像一个本地对象一样经常使用它。
与CORBA不同之处在于RMI客户必定知道提供远程服务主机的URL,这个URL可以经过rmi://host/path或rmi://host:port/path来指定,假设省略端口号,就经常使用1099。
或者发生三个意外:RemoteException、NotBoundException、MalformedURLException,三个寻常都须要捕捉。
RemoteException、Naming和NotBoundException在.*中定义,MalformedURLException在.*中定义。
另外,客户机将向远程对象传递串行化对象Serializable,所以还应在程序中输入.*。
import .*; import .*; import .*; public class RemClient { public static void main(String[] args) { try { String host = ( > 0) ? args[0] : localhost; file://从命令行读取远程主机名 file://经过URL在远程主机上查找对象,并把它转化为本地接口Rem类型 Rem remObject=(Rem)(rmi:// + host + /Rem); (()); file://调用远程对象的方法 } catch(RemoteException re) {(RemoteException: + re); <br/><br/>} catch(NotBoundException nbe) {(NotBoundException: + nbe); <br/><br/>} catch(MalformedURLException mfe){(MalformedURLException:+ mfe); <br/><br/>}}} 3.远程对象成功类() 这个类真正成功RMI客户调用的远程对象,它必定从UnicastRemoteObject承袭,其结构函数应抛出RemoteException意外。
import .*; import ; public class RemImpl extends UnicastRemoteObject implements Rem { public RemImpl() throws RemoteException {} file://结构函数抛出RemoteException意外 public String getMessage() throws RemoteException { return(Here is a remote message.); }} file://向RMI客户前往一个信息串 主机类() 该类创立远程对象成功RemImpl的一个实例,而后用一个特定的URL来注册它,所谓注册就是经过或来将RemImpl实例绑定到URL上。
import .*; import .*; public class RemServer { public static void main(String[] args) { try { RemImpl localObject = new RemImpl(); file://生成远程对象成功的一个实例 (rmi:///Rem, localObject); file://将远程对象实例绑定到rmi:///Rem上 }catch(RemoteException re){(RemoteException:+re); <br/><br/>}catch(MalformedURLException mfe) {(MalformedURLException: +mfe); <br/><br/>}}} 三、编译和运转 1.如何在Java中成功远程方法调用(1) 2.如何在Java中成功远程方法调用(2) 编译RMI客户和主机,这将智能编译远程对象的本地接口和远程对象成功 Javac file://智能编译远程对象的本地接口 Javac file://智能编译远程对象成功 2. 生成客户承接模块和主机框架 rmic RemImpl 这将结构RemImpl_和RemImpl_。
请将、和RemImpl_拷贝到RMI客户机,将、 、和RemImpl_拷贝到RMI主机。
3. 进行RMI注册 rmiregistry file://在主机上口头。
不论有多少个远程对象,本操作只有做一次性 4. 运转 Java file://进行RMI主机(在主机上口头) Java file://进行RMI客户,将输入“Here is a remote message.”