提供远端访问的时候,我们首先需要定义远端能够访问哪些东西,在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. Task 1 四则运算

    第一节课作业 1.设计思想:随机产生30道题目,主体是一个for循环,在循环体中加上相应的内容,包括随机数函数得到两个运算数值以及运算符号,再利用switch,case结构输出相应的题目即可. 2.源 ...

  2. VS2010中配置OpenGL

    下面将对VS2010中配置OpenGL进行简单介绍. 学习OpenGL前的准备工作第一步,选择一个编译环境现在Windows系统的主流编译环境有Visual Studio,Broland C++ Bu ...

  3. Beta Scrum Day 2 — 听说

    听说

  4. Swift-懒加载使用

    //    懒加载 lazy var tableView : UITableView = {         let tempTableView = UITableView()         ret ...

  5. 关于css伪类

    p:nth-child(2){} !选择所有p元素的第二个子元素:  p:nth-of-type(2) !选择所有p元素第二个为p的子元素(是选择第二个类型为p的元素 而不是第二个子集为p的元素)

  6. java 常见的异常大集合

    算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:NegativeAr ...

  7. 深度学习:卷积神经网络(convolution neural network)

    (一)卷积神经网络 卷积神经网络最早是由Lecun在1998年提出的. 卷积神经网络通畅使用的三个基本概念为: 1.局部视觉域: 2.权值共享: 3.池化操作. 在卷积神经网络中,局部接受域表明输入图 ...

  8. Kafka高可用实现

    数据存储格式 Kafka的高可靠性的保障来源于其健壮的副本(replication)策略.一个Topic可以分成多个Partition,而一个Partition物理上由多个Segment组成. Seg ...

  9. 计算机网络【8】—— Get和Post请求的区别

    get参数通过url传递,post放在request body中. get请求在url中传递的参数是有长度限制的,而post没有. get比post更不安全,因为参数直接暴露在url中,所以不能用来传 ...

  10. path变量修改后无法保存

    Eclipse启动时出现错误: A Java Runtime Environment (JRE) or Java Development Kit(JDK) must be available in o ...