热门搜索 :
考研考公
您的当前位置:首页正文

如何在Java中实现远程方法调用

来源:东饰资讯网

如何在Java中实现远程方法调用

一、Java中的远程方法调用

二、实现一个简单的RMI

要使用RMI,必须构造四个主要的类:远程对象的本地接口、RMI客户、远程对象实现和RMI服务器。RMI服务器生成远程对象实现的一个实例,并用一个非凡的URL注册它,RMI客户在远程服务器上查找对象,若找到就把它转换成本地接口类型,然后像一个本地对象一样使用它。下面是一个简单的RMI例子,远程对象只返回一个消息字符串。要使这个例子更有价值,我们需要做的就是完善远程对象实现类。

1.远程对象的本地接口类(Rem.java)

该类仅仅是一个接口,而不是实现,RMI客户机可以直接使用它,RMI服务器必须通过一个远程对象来实现它,并用某个URL注册它的一个实例。

import java.rmi.*;

public interface Rem extends Remote { public String getMessage() throws

RemoteException;}

本地接口(Rem)必须是公共的,否则客户机在加载一个实现该接口的远程对象时就会出错。此外,它还必须从java.rmi.Remote继续而来,接口中的每一个方法都必须抛出远程异常java.rmi.RemoteException。

2.RMI客户类(RemClient.java)

import java.rmi.*;

import java.io.*;

public class RemClient {

public static void main(String[] args) {

try {

String host = (args.length 0) ? args[0] : localhost; //从命令行读取远程主机名

//通过URL在远程主机上查找对象,并把它转化为本地接口Rem类型

Rem remObject=(Rem)Naming.lookup(rmi:// + host + /Rem);

System.out.println(remObject.getMessage()); //调用远程对象的方法

} catch(RemoteException re) {System.out.println(RemoteException: + re);

} catch(NotBoundException nbe) {System.out.println(NotBoundException: +

nbe);

} catch(MalformedURLException

mfe){System.out.println(MalformedURLException:+ mfe);

}}}

3.远程对象实现类(RemImpl.java)

这个类真正实现RMI客户调用的远程对象,它必须从UnicastRemoteObject继续,其构造函数应抛出RemoteException异常。

import java.rmi.*;

import java.rmi.server.UnicastRemoteObject;

public class RemImpl extends UnicastRemoteObject implements Rem {

public RemImpl() throws RemoteException {} //构造函数抛出RemoteException异常

public String getMessage() throws RemoteException {

return(Here is a remote message.); }} //向RMI客户返回一个消息串

4.RMI服务器类(RemServer.java)该类创建远程对象实现RemImpl的一个实例,然后用一个特定的URL来注册它,所谓注册就是通过Naming.bind或Naming.rebind来将RemImpl实例绑定到URL上。

Top