提供远端访问的时候,我们首先需要定义远端能够访问哪些东西,在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. Struts2 核心流程

    1.Struts2架构图  这是Struts2官方站点提供的Struts 2 的整体结构.  执行流程图 2.Struts2部分类介绍  这部分从Struts2参考文档中翻译就可以了. ActionM ...

  2. Leetcode题库——33.搜索旋转排序数组

    @author: ZZQ @software: PyCharm @file: search.py @time: 2018/11/12 18:12 要求:假设按照升序排序的数组在预先未知的某个点上进行了 ...

  3. 如何解决abd.exe已停止工作

     打开电脑,右键点击属性会出现如下界面: 点击左边高级系统设置:将会出现如下界面: 点击环境变量,点编辑. 把环境变量中的 ANDROID_ADB_SERVER_PORT 改成1122以后还遇到这个问 ...

  4. week4a:个人博客作业

    本周结对项目的要求: 黄金点游戏是一个数字小游戏,其游戏规则是: N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.6 ...

  5. Maven解读:项目依赖管理如何优化

    Github地址:https://github.com/zwjlpeng/Maven_Detail Maven最大的好处莫过于其强大的依赖管理系统,在Pom配置文件中指定项目需要的Jar包的坐标,Ma ...

  6. es6 ...展开运算符

    展开运算符,目前应用在数组上,对象展开运算符,将在es7 提案 1.两个对象连接返回新的对象   let a = {aa:'aa'} let b = {bb:'bb'} let c = {...a,. ...

  7. 初识asp

    1.ASP(Active Server Pages 动态服务器页面)是一种生成动态交互性网页的强有力工具 <!DOCTYPE html> <html> <body> ...

  8. delphi 删除字符串的回车、空格、Tab键

    myStr:=StringReplace(myStr, chr(13)+chr(10), '', [rfReplaceAll]);//删除回车      myStr:=StringReplace(my ...

  9. rpc 协议规范 之 rmi http webservice 和 一些框架

    RPC(Remote Procedure Call)是远程调用,是一种思想,也是一种协议规范.简单地说就是能使应用像调用本地方法一样的调用远程的过程或服务,可以应用在分布式服务.分布式计算.远程服务调 ...

  10. java 构造器二