Java RMI 简单实现
提供远端访问的时候,我们首先需要定义远端能够访问哪些东西,在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 简单实现的更多相关文章
- Java RMI简单例子HelloWorld
Java RMI 指的是远程方法调用 (Remote Method Invocation).它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法.可以用此方 ...
- Java RMI 简单示例
一.创建远程服务 1.创建 Remote 接口,MyRemote.java import java.rmi.*; public interface MyRemote extends Remote{ p ...
- Java RMI 介绍和例子以及Spring对RMI支持的实际应用实例
RMI 相关知识 RMI全称是Remote Method Invocation-远程方法调用,Java RMI在JDK1.1中实现的,其威力就体现在它强大的开发分布式网络应用的能力上,是纯Java的网 ...
- java RMI入门指南
感觉这篇文章不错,直接转了 RMI全称是Remote Method Invocation-远程方法调用,Java RMI在JDK1.1中实现的,其威力就体如今它强大的开发分布式网络应用的能力上,是纯J ...
- Java RMI 入门指南
开通博客也有好些天了,一直没有时间静下心来写博文,今天我就把两年前整理的一篇关于JAVA RMI入门级文章贴出来,供有这方面需要的同学们参考学习. RMI 相关知识 RMI全称是Remote Meth ...
- JAVA RMI远程方法调用简单实例[转]
RMI的概念 RMI(Remote Method Invocation)远程方法调用是一种计算机之间利用远程对象互相调用实现双方通讯的一种通讯机制.使用这种机制,某一台计算机上的对象可以调用另外 一台 ...
- JAVA RMI远程方法调用简单实例(转载)
来源:http://www.cnblogs.com/leslies2/archive/2011/05/20/2051844.html RMI的概念 RMI(Remote Method Invocati ...
- Java RMI 实现一个简单的GFS(谷歌文件系统)——介绍篇
本系列主要是使用Java RMI实现一个简单的GFS(谷歌文件系统,google file system),首先整体简单介绍下该项目. [为了更好的阅读以及查看其他篇章,请查看原文:https://w ...
- Java RMI 实现一个简单的GFS(谷歌文件系统)——背景与设计篇
目录 背景 系统设计 1. 系统功能 2. Master组件 2.1 命名空间 2.2 心跳机制 2.3 故障恢复和容错机制 3. ChunkServer组件 3.1 本地存储 3.2 内存命中机制 ...
随机推荐
- keras+theano+tensorflow+darknet
keras 安装: 最好在anaconda的虚拟环境下搭建: conda create -n 环境名 python=3.6 进入环境: source activate 环境名 安装keras: pip ...
- eclipse 项目转as项目时 .so文件 jniLibs的设置
接着上篇:http://blog.csdn.net/u011644423/article/details/46989167 转换项目 还是出现了问题 java.lang.UnsatisfiedLink ...
- 结对作业(web)
作业源代码地址:https://git.coding.net/mal123/arithmetic.git 网页版测试地址:http://47.93.197.5:8080/mal_war_explode ...
- Eclipse下使用Git
安装Git 有的eclipse已经自带了Git了,就不用安装了. 如果,想重新安装,可以先卸载git,卸载 不同eclipse卸载不一样: 1.在Eclipse中依次点击菜单"Help&qu ...
- fx投影效果分离
虽然忙着花花二期三期bug.bug ing,修改等待中突然看见一张logo.文字下面的阴影图,如下,就满脑子在想阴影到底咋做的.. 七拼八凑的尝试后大体样子是有,终究没有上图那种字体轮廓的阴影... ...
- Js获取上一月份
new Date(new Date().setMonth(new Date().getMonth() - 1))
- 《统计学习方法》P179页10.22前向后向算法公式推导
- dbgrid控件如何能在左边显示行号?
procedure TMSWageEdit.aqyMSWageEditCalcFields(DataSet: TDataSet);begin inherited; with DataSet do ...
- 【原创】 PLSQL 索引排序优化
转载请注明出处 select /*+INDEX_DESC(T IDX_SYS_MESS_CREATE_DATE)*/ * FROM sys_message T where t.create_date ...
- 【BZOJ3064】CPU监控(线段树)
[BZOJ3064]CPU监控(线段树) 题面 BZOJ 洛谷 题解 神仙\(zsy\)出在了\(noip\)模拟的题目.(然而\(zsy\)出的还是这题的升级版) 首先明确一点,这题是一个吉司机线段 ...