RMI实例

 

RMI 接口Demo

简单的分布式rmi接口写法,4文件

1.       业务接口

package com.sk.rmi;

import java.rmi.Remote;

import java.rmi.RemoteException;

/*此接口继承 Remote接口

   供远程客户调用的方法都在这样公开(暴露)

   每一个方法都抛出RemoteException

*/

public interface PerfectTime extends Remote{

    long getPerfectTime() throws RemoteException;

}

2.       业务接口实现

package com.sk.rmi;

import java.rmi.RemoteException;

import java.rmi.server.UnicastRemoteObject;

/*

业务接口的具体实现

*/

public class PerfectTimeBean extends UnicastRemoteObject implements PerfectTime{

//必须具备显式构造函数,并抛出RemoteException

    protected PerfectTimeBean() throws RemoteException { }

    private static final long serialVersionUID = 1L ;

    public long getPerfectTime() throws RemoteException {

       // TODO Auto-generated method stub

       return System.currentTimeMillis();

    }

}

3.       rmi服务端

package com.sk.rmi;

 

import java.net.MalformedURLException;

import java.rmi.AlreadyBoundException;

import java.rmi.Naming;

import java.rmi.RemoteException;

import java.rmi.registry.LocateRegistry;

import java.rmi.registry.Registry;

/*

Rmi服务端方法,执行rmi服务端的机器将变为rmi服务器,提供给客户端rmi远程对象,从而调用暴露的远程方法

*/

public class PerfectTimeServer {

 public static void main(String[] args) throws RemoteException, MalformedURLException, AlreadyBoundException {

    //声明业务接口

    PerfectTime pt=new PerfectTimeBean();

    //LocateRegistry用户提供命名服务,创建命名服务,2008为端口

    Registry registry=LocateRegistry.createRegistry(2008);

//  registry.bind("task", pt);

    //同注释的效果一样

    Naming.rebind("rmi://localhost:2008/task", pt);

    System.out.println("Ready ");

}

}

 

4.       rmi客户端

package com.sk.rmi;

 

import java.net.MalformedURLException;

import java.rmi.Naming;

import java.rmi.NotBoundException;

import java.rmi.RMISecurityManager;

import java.rmi.RemoteException;

import java.rmi.registry.LocateRegistry;

/*

 Rmi客户端

*/

public class PerfectTimeClient {

    public static void main(String[] args) throws MalformedURLException, RemoteException, NotBoundException {

//     System.setSecurityManager(new RMISecurityManager());

//     PerfectTime pt = (PerfectTime)Naming.lookup("//127.0.0.1:2008/task");

           PerfectTime pt =(PerfectTime)LocateRegistry.getRegistry(2008).lookup("task");

        System.out.println("server Time is:"+pt.getPerfectTime());

    }

}

4java源文件编译生成class文件,rmic 编译 PerfectTimeBean.class文件,由于有包结构了,所有直接将包 com.sk.rmi拷到 Java/jdk 1.5.0 _02/bin,执行rmic –vcompat com.sk.rmi.PerfectTimeBean将生成PerfectTimeBean_Skel.class, PerfectTimeBean_Stub.class2class文件,

运行rmiregistry.exe

运行PerfectTimeServer

运行 PerfectTimeClient,即可调用rmi服务端方法

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gamebox1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值