首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

Java兑现远程访问(RMI-Naming)

2013-01-23 
Java实现远程访问(RMI-Naming)Java实现远程访问(RMI-Naming)1,编写服务器端接口新建项目:ITest,编写接口IS

Java实现远程访问(RMI-Naming)
Java实现远程访问(RMI-Naming)

1,编写服务器端接口

新建项目:ITest,编写接口IServer?,有几点有求:

(1)接口必须实现类Remote

(2)接口中的方法必须抛出异常RemoteException

package?cn.sun.server;

?

import?java.rmi.Remote;

import?java.rmi.RemoteException;

?

public?interface?IServer?extends?Remote{

int?add(int?a,int?b)throws?RemoteException;

}

2,编写实现端

新建项目:ImplTest,编写实现类ServerImpl,有几点有求:

(1)实现类必须继承类UnicastRemoteObject??

(2)必须有空的实现且抛出异常RemoteException?

package?cn.sun.impl;

?

import?java.rmi.RemoteException;

import?java.rmi.server.UnicastRemoteObject;

import?cn.sun.server.IServer;

?

public?class?ServerImpl?extends?UnicastRemoteObject?implements?IServer?{

public?ServerImpl()?throws?RemoteException?{

}

public?int?add(int?a,?int?b)?{

return?a+b;

}

}

注意:此工程中的接口的实现要依赖于工程ITest中的接口,所以本工程必须从build?path中导入工程ITest,具体方法如下:在工程名ImplTest上点击右键选择Build?Path,选择Configure?Build?Path,在Projects这一项中Add项目ITest。

3,编写容器端

说明:接口和实现类都是运行在服务器端的,所以要有一个容器来运行接口和实现类,所以也要开启容器的服务。

新建项目:Host,编写容器类Host,开启服务有几个步骤:

(1)通过类LocateRegistry的方法createRegistry(port)来绑定端口

(2)实例化接口IServer?iServer?=?new?ServerImpl();

(3)将实例绑定到接服务中,通过Naming类的rebind("//127.0.0.1:1009/绑定名"?,?所绑定的实例)方法实现;

package?cn.sun.host;

?

import?cn.sun.impl.ServerImpl;

import?cn.sun.server.IServer;

import?java.rmi.Naming;

import?java.rmi.registry.LocateRegistry;

public?class?Host?{

public?static?void?main(String[]?args)throws?Exception

{

LocateRegistry.createRegistry(1009);//绑定端口

IServer?iServer?=?new?ServerImpl();

Naming.rebind("//127.0.0.1:1009/iServer"?,?iServer);

}

}

注意:此工程中的容器的实现要依赖于工程ITest中的接口和工程ImplTest中的实现类,所以本工程必须从build?path中导入工程ITest和工程ImplTest,具体方法跟上面类似。

4,编写客户端

说明:客户端是运行在客户端服务器的,所以对于服务器上的程序要进行远程访问。

新建项目:Client,编写客户端类Client,实现远程访问有几个步骤:

(1)通过Naming类的lookup(“//IP:port/绑定名”)方法来远程获取接口的实例

(2)通过接口的实例就可以调用接口实现中的方法

package?cn.sun.client;

import?java.rmi.Naming;

import?cn.sun.server.IServer;

public?class?Client?{

public?static?void?main(String?[]?args)throws?Exception

{

IServer?iServer?=?(IServer)Naming.lookup("//127.0.0.1:1009/iServer");

System.out.println(iServer.add(5,?6));

}

}

注意:此工程中的远程访问的实现只需依赖于工程ITest中的接口,所以本工程必须从build?path中导入工程ITest,具体方法跟上面类似。

5,程序的运行

(1)运行Host工程中的Host类中的main方法(开启服务器端容器的服务)

(2)运行客户端

?

?

热点排行