RMI调用模版[转载]

1. 定义远程接口  

// 远程接口继承自Remote

// 远程方法的传入参数和返回值必须是自然类型(intfloatboolean等)

// 或者实现了SerializableRemote接口的对象。

public interface Time extends java.rmi.Remote {

    // 远程方法必须抛出RemoteException

    public String getTime() throws RemoteException;

}

 

2. 定义实现类 

// 注意:实现类继承自UnicastRemoteObject和自定义的远程接口Time

public class TimeImpl extends java.rmi.server.UnicastRemoteObject implements Time {

    // 注意:由于RemoteObject构造函数要抛出RemoteException

    // 因此务必定义构造函数并抛出RemoteException

    public TimeImpl() throws RemoteException { super(); }

 

    // 这里是远程方法:

    public String getTime() throws RemoteException {

        return " 12:04:27 ";

    }

 

    // 启动服务:

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

        // 可以手动启动RMI Registry,也可以在程序中启动:

        java.rmi.registry.LocateRegistry.createRegistry(1099);

        // 绑定名字服务,地址是本地计算机名或本机IP,默认端口是1099

        java.rmi.Naming.bind("//localhost:1099/servicename", new TimeImpl());

        // 如果没有异常抛出,则绑定成功。

        // 如果名字已经被绑定,可以用Naming.rebind()替换掉已绑定的服务。

    }

}

 

3. 编译生成桩和框架 

运行rmic TimeImpl,生成TimeImpl_Skel.classTimeImpl_Stub.class

 

4. 客户端

// 客户端文件包含客户端代码Client.class,远程接口Time.class

// rmic生成的支持类TimeImpl_Skel.classTimeImpl_Stub.class

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

    // 客户端通过IP引用服务器端的远程对象,因此可以动态选择服务器。

    // 如果不指定端口,默认端口号是1099

    Time time = (Time)java.rmi.Naming.lookup("//localhost:1099/servicename");

    System.out.println(time.getTime());

}

来源: http://blog.csdn.net/asklxf/archive/2004/07/04/33533.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值