博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java RMI(远程方法调用)
阅读量:5309 次
发布时间:2019-06-14

本文共 2523 字,大约阅读时间需要 8 分钟。

要实现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/archive/2011/12/19/2293959.html

你可能感兴趣的文章
Vim配置Node.js开发工具
查看>>
web前端面试题2017
查看>>
ELMAH——可插拔错误日志工具
查看>>
MySQL学习笔记(四)
查看>>
【Crash Course Psychology】2. Research & Experimentation笔记
查看>>
两数和
查看>>
移动设备和SharePoint 2013 - 第3部分:推送通知
查看>>
SOPC Builder中SystemID
查看>>
MySQL数据库备份工具mysqldump的使用(转)
查看>>
青海行--(7月19日)麦积山石窟
查看>>
NTP服务器配置
查看>>
【转】OO无双的blocking/non-blocking执行时刻
查看>>
深入理解java集合框架(jdk1.6源码)
查看>>
php截取后台登陆密码的代码
查看>>
选假球的故事
查看>>
ul li剧中对齐
查看>>
关于 linux 的 limit 的设置
查看>>
模块搜索路径
查看>>
如何成为一名优秀的程序员?
查看>>
HDU(4528),BFS,2013腾讯编程马拉松初赛第五场(3月25日)
查看>>