zoukankan      html  css  js  c++  java
  • java RMI(远程方法调用)

    要实现java RMI,需要有以下几个步骤:

     

      1、生成一个远程接口

     

      2、实现远程对象(服务器端程序)

     

      3、编写服务器程序

     

      4、编写客户程序

     

      5、注册远程对象

     

      6、调用远程对象

    下面以一个简单计算器的实例说明:

      1、生成一个远程接口

    import java.rmi.Remote;
    import java.rmi.RemoteException;

    //接口必须继承自java.rmi.Remote;
    public interface ICalculator extends Remote {
     //声明接口方法,每一个远程调用方法必须抛出java.rmi.RemoteException异常
     public float add(float a,float b) throws RemoteException;
     public float sub(float a,float b) throws RemoteException;
     public float mult(float a,float b) throws RemoteException;
     public float divide(float a,float b) throws RemoteException;
    }

      2、实现远程对象(服务器端程序)

    import java.rmi.RemoteException;
    import java.rmi.server.UnicastRemoteObject;

    //服务实现类必须继承自import java.rmi.server.UnicastRemoteObject;
    public class CalculatorImpl extends UnicastRemoteObject implements ICalculator {

     public CalculatorImpl() throws RemoteException{
      super();
     }
     @Override
     public float add(float a, float b) throws RemoteException {
      // TODO Auto-generated method stub
      return a + b;
     }

     @Override
     public float sub(float a, float b) throws RemoteException {
      // TODO Auto-generated method stub
      return a - b;
     }

     @Override
     public float mult(float a, float b) throws RemoteException {
      // TODO Auto-generated method stub
      return a*b;
     }

     @Override
     public float divide(float a, float b) throws RemoteException {
      // TODO Auto-generated method stub
      return a/b;
     }
    }

      3、编写服务器程序

    import javax.naming.InitialContext;

    public class CalcServer {
     public static void main(String[] args){
      try {
       CalculatorImpl cal = new CalculatorImpl();
       javax.naming.Context context =  new InitialContext();
       context.bind("rmi://localhost:1099/CalculatorService", cal);
       System.out.println("server started...");
      } catch (Exception e) {
       // TODO: handle exception
       e.printStackTrace();
      }
     }
    }

      4、编写客户程序

    import javax.naming.Context;
    import javax.naming.InitialContext;


    public class CalcClient {
     public static void main(String[] args){
      try {
       Context context = new InitialContext();
       //查找远程对象并调用远程方法
       ICalculator cal = (ICalculator)context.lookup("rmi://localhost:1099/CalculatorService");
       System.out.println(cal.add(1, 2));
       System.out.println(cal.sub(1, 2));
       System.out.println(cal.mult(1, 2));
       System.out.println(cal.divide(1, 2));
      } catch (Exception e) {
       // TODO: handle exception
       e.printStackTrace();
      }
     }
    }
      5、注册远程对象

    打开命令提示符,启动rmi注册程序:start rmiregistry回车,将弹出一个rmiregistry.exe窗口。

    图片

    切换到.class文件所在的目录,注册并启动远程对象:java CalcServer

    将打印server started...

    图片

      6、调用远程对象

    打开命令提示符,切换到.class文件所在的目录,调用客户端程序java CalcClient,将打印如下内容:

    3.0

    -1.0

    2.0

    0.5

     图片

  • 相关阅读:
    如何使用IntelliJ IDEA 14创建基于Maven3的Java Web Project
    一些python语法的合集
    thuwc2019滚粗记
    noip2018总结
    树链剖分
    NOIp2017游记(滚粗之旅)
    使用Redux管理你的React应用
    校招面试中积累的前端问题
    WebService 生成类的命令语句
    Request 请求页面的地址路径获取
  • 原文地址:https://www.cnblogs.com/kane1990/p/2293959.html
Copyright © 2011-2022 走看看