提供远端访问的时候,我们首先需要定义远端能够访问哪些东西,在Java中,定义这类接口需要实现Remote接口

 public interface Business extends Remote{

     public String echo(String msg) throws RemoteException;

 }

定义完接口之后,这些功能是需要我们自己在Server端实现的,因此,声明一个类实现我们提供接口。

 public class BusinessImpl implements Business{

     @Override
public String echo(String msg) throws RemoteException {
if("quit".equalsIgnoreCase(msg)) {
System.out.println("Server will be shutdown");
System.exit(0);
}
System.out.println("Message from client:"+msg);
return "Server response:"+msg;
}
}

实现完这个方法之后,有一个问题是,怎么运行,既然是远端访问,肯定得有端口号,肯定得有实例,所以我们还需要注册我们的代码

 public class Server {

     public static final String SERVER_REGISTER_NAME = "BusineeDemo";

     public static void main(String[] args) throws RemoteException {
int port = 2016;
Business business = new BusinessImpl();
UnicastRemoteObject.exportObject(business,port);
Registry registry = LocateRegistry.createRegistry(1099);
registry.rebind(SERVER_REGISTER_NAME, business);
}
}

这里有两个Java的类:UnicastRemoteObject和LocateRegistry

一个接口:Registry

Registry接口:对简单的远端对象提供一个远端接口用于提供存储和获取远端对象的引用,而这些是通过任意的String类型的变量名称获取,bind,unbind,rebind方法是用于更改注册的这些名称,lookup和list方法是用于查询当前当前已经绑定的对象。

UnicastRemoteObject类:用于导出一个远端对象

LocateRegistry类:是一个用来获得远端调用对象引用的辅助类程序,主要是在一个特定的IP上构建一个远端对象来接受来自特定端口的回调。

简单的服务端完成了,现在来看客户端:

客户端代码就更加简单,前面我们提到我们可以通过Registry的lookup方法来获取当前已经绑定的服务,所以很自然,我们首先要获得这个Registry

 public class Client {

     public static void main(String[] args) throws RemoteException, NotBoundException {
// Registry registry = LocateRegistry.getRegistry("localhost");
Registry registry = LocateRegistry.getRegistry("localhost", 1099);
Business business = (Business) registry.lookup(Server.SERVER_REGISTER_NAME);
System.out.println(business.echo("Hello Server"));
}
}

Java RMI 简单实现的更多相关文章

  1. Java RMI简单例子HelloWorld

    Java RMI 指的是远程方法调用 (Remote Method Invocation).它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法.可以用此方 ...

  2. Java RMI 简单示例

    一.创建远程服务 1.创建 Remote 接口,MyRemote.java import java.rmi.*; public interface MyRemote extends Remote{ p ...

  3. Java RMI 介绍和例子以及Spring对RMI支持的实际应用实例

    RMI 相关知识 RMI全称是Remote Method Invocation-远程方法调用,Java RMI在JDK1.1中实现的,其威力就体现在它强大的开发分布式网络应用的能力上,是纯Java的网 ...

  4. java RMI入门指南

    感觉这篇文章不错,直接转了 RMI全称是Remote Method Invocation-远程方法调用,Java RMI在JDK1.1中实现的,其威力就体如今它强大的开发分布式网络应用的能力上,是纯J ...

  5. Java RMI 入门指南

    开通博客也有好些天了,一直没有时间静下心来写博文,今天我就把两年前整理的一篇关于JAVA RMI入门级文章贴出来,供有这方面需要的同学们参考学习. RMI 相关知识 RMI全称是Remote Meth ...

  6. JAVA RMI远程方法调用简单实例[转]

    RMI的概念 RMI(Remote Method Invocation)远程方法调用是一种计算机之间利用远程对象互相调用实现双方通讯的一种通讯机制.使用这种机制,某一台计算机上的对象可以调用另外 一台 ...

  7. JAVA RMI远程方法调用简单实例(转载)

    来源:http://www.cnblogs.com/leslies2/archive/2011/05/20/2051844.html RMI的概念 RMI(Remote Method Invocati ...

  8. Java RMI 实现一个简单的GFS(谷歌文件系统)——介绍篇

    本系列主要是使用Java RMI实现一个简单的GFS(谷歌文件系统,google file system),首先整体简单介绍下该项目. [为了更好的阅读以及查看其他篇章,请查看原文:https://w ...

  9. Java RMI 实现一个简单的GFS(谷歌文件系统)——背景与设计篇

    目录 背景 系统设计 1. 系统功能 2. Master组件 2.1 命名空间 2.2 心跳机制 2.3 故障恢复和容错机制 3. ChunkServer组件 3.1 本地存储 3.2 内存命中机制 ...

随机推荐

  1. 《找出1到正整数N中出现1的次数》

    <找出1到正整数N中出现1的次数> 编程思想:依次求出正整数每个位数上出现1的次数,累加即可得到最后想要的结果:而每一位上出现1的个数与和它相邻的其它位数上的数字有关系(以此位置上的数为对 ...

  2. HDU 1565 方格取数(1) 轮廓线dp

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1565 方格取数(1) Time Limit: 10000/5000 MS (Java/Others) ...

  3. Week-4-作业1

    前言 经过了上周作业的学习拾遗,让我学到了很多东西,也能更好的阅读<构建之法>这本书,下面是我在阅读过第四章和第十七章之后想到的一些问题. 第四章 4.2.1 关于缩进,书中说用四个空格刚 ...

  4. 用delphi开发activex打印控件

    http://blog.csdn.net/baronyang/article/details/4465468

  5. python基础(二)条件判断、循环、格式化输出

    继续上一篇,今天主要总结一下条件判断.循环.格式化输出 一.条件判断 python中条件判断使用if else来判断,多分支的话使用if elif ... else,也就是如果怎么怎么样就怎么怎么样, ...

  6. DataTable List 相互转换

    This uses the FastMember's meta-programming API for maximum performance. If you want to restrict it ...

  7. 【刷题】BZOJ 2002 [Hnoi2010]Bounce 弹飞绵羊

    Description 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置 ...

  8. 安装和使用 PyInstaller 遇到的问题

    写在前面 在学习 Python语言程序设计 的时候,其中有一节课提到了 PyInstaller 第三方库.PyInstaller 可以用来打包 python 应用程序,打包完的程序就可以在没有安装 p ...

  9. wazhu之agent功能详解

      一.日志数据收集 日志数据收集是从服务器或设备生成的记录中收集的实时过程.此组件可以通过文本文件或Windows事件日志接收日志.它还可以通过远程syslog直接接收日志,这对防火墙和其他此类设备 ...

  10. Mac上安装python3并设置SublimeREPL插件默认运行python3

    1.安装python3 $ brew search python $ brew install python3 这里安装完后不需要单独添加环境变量,程序已经处理好,可以直接运行python3命令. $ ...