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

RMI 开发方法

2012-12-23 
RMI 开发步骤开发RMI步骤:1.编写服务接口,此接口须直接或间接继承至Remote接口,且此服务接口中的所有方法

RMI 开发步骤
开发RMI步骤:
1.编写服务接口,此接口须直接或间接继承至Remote接口,且此服务接口中的所有方法必须声明抛出受查RemoteException异常.

package com.pa.rmi.test;import java.rmi.Remote;public interface BaseRemoteInterface extends Remote {}


2.编写服务接口的实现类,继承UnicastRemoteObject,并实现服务接口.UnicastRemoteObject是一个用于构建RMI Server的便利基类,它可以处理大部分服务器创建的工作,如当调用其构造函数时,将自动创建Socket,并在给定的端口上监听客户端的请求.
package com.pa.rmi.test.upload;import java.rmi.RemoteException;import com.pa.rmi.test.BaseRemoteInterface;public interface FileUploadHandler extends BaseRemoteInterface{public boolean upload(String src,String dest)throws FileUploadException,RemoteException;}

3.使用rmic生成此实现类的stub(存根)和skeleton(骨架)
如何生成stub请参见本人的另一篇文章:JDK1.6 rmic命令使用

4.创建一个服务器,用于发布2中写好的类
package com.pa.rmi.test;import java.net.MalformedURLException;import java.rmi.AlreadyBoundException;import java.rmi.Naming;import java.rmi.Remote;import java.rmi.RemoteException;import java.rmi.registry.LocateRegistry;import com.pa.rmi.test.upload.FileUploadHandler;import com.pa.rmi.test.upload.FileUploadHandlerImpl;public class RMIRegistHelper {public static void regist(Remote remoteObject, String name,Integer port ) {try {if(port==null||port==0){port = 1099;}LocateRegistry.createRegistry(port);Naming.bind("rmi://localhost:"+port+"/" + name, remoteObject);System.out.println(name+" bound successful,listen on port :"+port);} catch (RemoteException e) {} catch (AlreadyBoundException e) {} catch (MalformedURLException e) {}}public static void main(String args[]) throws Exception {         FileUploadHandler handler = new FileUploadHandlerImpl();         regist(handler,"fileUploadHandler",null);}}


5.创建一个客户程序进行RMI调用
 package com.pa.rmi.test.upload;import java.net.MalformedURLException;import java.rmi.*;public class ClientTest {public static void main(String args[]) {try {// 在RMI服务注册表中查找名称为fileUploadHandler的对象,并调用其上的方法FileUploadHandler fileUploadHandler = (FileUploadHandler) Naming.lookup("rmi://localhost:1099/fileUploadHandler");System.out.println(fileUploadHandler.upload("",""));} catch (NotBoundException e) {e.printStackTrace();} catch (MalformedURLException e) {e.printStackTrace();} catch (RemoteException e) {e.printStackTrace();} catch (FileUploadException e) {e.printStackTrace();}}}
谢谢啊

热点排行