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

 图片

原文地址:https://www.cnblogs.com/kane1990/p/2293959.html