使用RMI编写客户端-服务器应用程序,实现分布式计算

开发环境: Windows2000 + JBuilderX + JDK1.4.2

远程方法调用(Remote Method Invocation,RMI)可以在不同的Java虚拟机(JVM)之间实现对象与对象的通信.

使用RMI编写客户-服务器应用程序包括6个基本步骤:
1.定义远程接口
2.实现远程接口
3.编写使用远程对象的客户
4.生成stub(客户代理)以及skeletom(服务器实体)
5.启动注册表并且注册对象
6.运行服务器和客户

下面通过一个简单的实例来介绍每一步.

1.定义远程接口
在JBuilderX中创建一个名为rmisample的project,然后在根目录创建一个名为riminterface的class,定义接口代码如下:
public class riminterface {
  interface HelloInterface extends java.rmi.Remote{
    public String sayHello() throws java.rmi.RemoteException;
  }
}

2.实现远程接口
在project根目录再创建一个名为HelloServer的class,实现以上接口,代码如下:
import java.rmi.*;
import java.rmi.server.*;
import java.util.Date;

public class HelloServer extends UnicastRemoteObject implements riminterface.HelloInterface{
  public HelloServer() throws RemoteException{
    super();
  }

  public String sayHello() throws java.rmi.RemoteException{
    return "It`s from bluesky!" + new Date();
  }
}
其中的sayHello就是实现了接口中sayHello的具体方法.

3.编写使用远程对象的客户
在project根目录再创建一个名为HelloClient的class,编写使用远程对象的客户,代码如下:
import java.rmi.*;

public class HelloClient {
  public static void main(String args[]){
    if(System.getSecurityManager() == null){
      System.setSecurityManager(new RMISecurityManager());
    }
    try{
      riminterface.HelloInterface obj = (riminterface.HelloInterface)Naming.lookup("/HelloServer");
      String message = obj.sayHello();
      System.out.println(message);
    }catch(Exception e){
      System.out.println(e.toString());
    }
  }
}
客户端通过Naming.lookup("/HelloServer");找到Server的远程接口并且调用其中的方法以实现虚拟机之间的相互通信.

4.生成stub(客户代理)以及skeletom(服务器实体)
新开一个command窗口,用rmic HelloServer语句生成stub(客户代理)以及skeletom(服务器实体).

5.启动注册表并且注册对象
打开JAVA_HOME/jre/lib/security/java.policy,将原来的授权方式改成 permission java.net.SocketPermission "*:1024-65535", "accept,connect,listen,resolve";然后保存退出.使用命令rmiregistry -J-Djava.security.policy=java.policy启动注册表.

然后在project根目录再创建一个名为RegisterIt的class,编写注册程序如下:
import java.rmi.*;

public class RegisterIt {

  public static void main(String args[]){
    try{
      HelloServer obj = new HelloServer();
      System.out.println("Object is" + obj);
      Naming.rebind("/HelloServer",obj);
      System.out.println("Already Start");
    }catch(Exception e){
      System.out.print(e);
    }
  }
}
用java RegisterIt命令注册接口.

6.运行服务器和客户
最后,运行客户端程序.

好了,关于RMI就介绍到这里,下次再见^-^!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值