java8的rmi_Java中的RMI
个人理解:
RMI就是RMI 是不是就是向客户端隐藏了实现类。
但是客户端要有与server端同样的接口。
接口:
/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2008-8-7 21:50:02
* 定义一个远程接口,必须继承Remote接口,其中需要远程调用的方法必须抛出RemoteException异常
*/
public interface IHello extends Remote {
/**
* 简单的返回“Hello World!"字样
* @return 返回“Hello World!"字样
* @throws java.rmi.RemoteException
*/
public String helloWorld() throws RemoteException;
/**
* 一个简单的业务方法,根据传入的人名返回相应的问候语
* @param someBodyName 人名
* @return 返回相应的问候语
* @throws java.rmi.RemoteException
*/
public String sayHelloToSomeBody(String someBodyName) throws RemoteException;
}
客户端、服务器端都要有。
实现类:
/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2008-8-7 21:56:47
* 远程的接口的实现
*/
public class HelloImpl extends UnicastRemoteObject implements IHello {
/**
* 因为UnicastRemoteObject的构造方法抛出了RemoteException异常,因此这里默认的构造方法必须写,必须声明抛出RemoteException异常
*
* @throws RemoteException
*/
public HelloImpl() throws RemoteException {
}
/**
* 简单的返回“Hello World!"字样
*
* @return 返回“Hello World!"字样
* @throws java.rmi.RemoteException
*/
public String helloWorld() throws RemoteException {
return "Hello World!";
}
/**
* 一个简单的业务方法,根据传入的人名返回相应的问候语
*
* @param someBodyName 人名
* @return 返回相应的问候语
* @throws java.rmi.RemoteException
*/
public String sayHelloToSomeBody(String someBodyName) throws RemoteException {
return "你好," + someBodyName + "!";
}
}
只要在服务器端有。
服务器的服务程序:
/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2008-8-7 22:03:35
* 创建RMI注册表,启动RMI服务,并将远程对象注册到RMI注册表中。
*/
public class HelloServer {
public static void main(String args[]) {
try {
//创建一个远程对象
IHello rhello = new HelloImpl();
//本地主机上的远程对象注册表Registry的实例,并指定端口为8888,这一步必不可少(Java默认端口是1099),必不可缺的一步,缺少注册表创建,则无法绑定对象到远程注册表上
LocateRegistry.createRegistry(8888);
//把远程对象注册到RMI注册服务器上,并命名为RHello
//绑定的URL标准格式为:rmi://host:port/name(其中协议名可以省略,下面两种写法都是正确的)
Naming.bind("rmi://localhost:8888/RHello",rhello);
// Naming.bind("//localhost:8888/RHello",rhello);
System.out.println(">>>>>INFO:远程IHello对象绑定成功!");
} catch (RemoteException e) {
System.out.println("创建远程对象发生异常!");
e.printStackTrace();
} catch (AlreadyBoundException e) {
System.out.println("发生重复绑定对象异常!");
e.printStackTrace();
} catch (MalformedURLException e) {
System.out.println("发生URL畸形异常!");
e.printStackTrace();
}
}
}
绑定服务端口。
客户端使用类:
/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2008-8-7 22:03:35
* 创建RMI注册表,启动RMI服务,并将远程对象注册到RMI注册表中。
*/
public class HelloServer {
public static void main(String args[]) {
try {
//创建一个远程对象
IHello rhello = new HelloImpl();
//本地主机上的远程对象注册表Registry的实例,并指定端口为8888,这一步必不可少(Java默认端口是1099),必不可缺的一步,缺少注册表创建,则无法绑定对象到远程注册表上
LocateRegistry.createRegistry(8888);
//把远程对象注册到RMI注册服务器上,并命名为RHello
//绑定的URL标准格式为:rmi://host:port/name(其中协议名可以省略,下面两种写法都是正确的)
Naming.bind("rmi://localhost:8888/RHello",rhello);
// Naming.bind("//localhost:8888/RHello",rhello);
System.out.println(">>>>>INFO:远程IHello对象绑定成功!");
} catch (RemoteException e) {
System.out.println("创建远程对象发生异常!");
e.printStackTrace();
} catch (AlreadyBoundException e) {
System.out.println("发生重复绑定对象异常!");
e.printStackTrace();
} catch (MalformedURLException e) {
System.out.println("发生URL畸形异常!");
e.printStackTrace();
}
}
}
指定服务器与指定端口。
感谢leizhimin。
java8的rmi_Java中的RMI相关推荐
- stream() 求和_Java教程:Java8统计list中指定属性的最大、最小、平均值、求和
点击上方关注订阅黑码教主获取更多精彩内容 Java8统计list中指定属性的最大.最小.平均值.求和 使用方式: list.stream().mapToDouble(Student1::getScor ...
- java 8 list,JAVA8 ListListInteger list中再装一个list转成一个list操作
我就废话不多说了,大家还是直接看代码吧~ List collect = IntStream.range(1, 10).boxed().collect(Collectors.toList()); Lis ...
- java8的lambda中的map相关操作
0 入门详解篇 1 史上最简单入门:java8的lambda中的map相关操作:基础及注意事项图文详解 2 java8的lambda中collect接口案例及原理详解,官方文档解读 3 j ...
- Java8的Stream中的Collectors操作求double类型和的坑
Java8的Stream中的Collectors操作求double类型和的坑 无敌踩坑王的我又双叒叕来了!!!!!! 例子: @Testpublic void testSumDouble() {dou ...
- java8的stream中的toMap
我们将对这个List使用java8的strea中的toMap转换成Map对象. toMap有个三个重载的方法,toConcurrentMap同理: 两个参数 public static <T, ...
- Java RMI(2):项目中使用RMI
转载地址: http://6221123.blog.51cto.com/6211123/1112619 点击打开链接 RMI网络编程开发之二 如何搭建基于JDK1.5的分布式JAVA RMI 程序 2 ...
- 深究Java中的RMI底层原理
原博客地址:http://blog.csdn.net/sinat_34596644/article/details/52599688 前言:随着一个系统被用户认可,业务量.请求量不断上升,那么单机系统 ...
- java8 base64_Java 8中的Base64 –加入乐趣为时不晚
java8 base64 最后,Java 8发布了. 最后,有一种执行Base64编码的标准方法. 长期以来,我们一直依赖于Apache Commons Codec(无论如何还是很棒的). 内存敏感的 ...
- java中使用rmi进行远程方法调用
java中进行远程方法调用,能支持分布式计算.并且可以实现在server的修改,能反应到各个client. 假如server的ip是:192.168.11.2, server端的代码如下: /*** ...
最新文章
- 用Windows电脑训练深度学习模型?超详细配置教程来了
- list-style 属性 2015-11-5
- 代码居中对齐_一篇文章带你了解CSS对齐方式
- Intellij idea导入项目时没有目录结构
- 机器学习 文本分类 代码_无需担心机器学习-如何在少于10行代码中对文本进行分类
- 奇妙的曲线--希尔伯特曲线
- 【转】DICOM通信 - PDU数据包(1)
- 【阿里云MVP月度分享】SaaS服务商如何通过数加平台统计业务流量
- String,StringBuilder, StringBuffer
- 编辑器未包含main类型_利用 ONLYOFFICE 将在线文档编辑器集成到 Python Web 应用程序中...
- 外媒:苹果公司将在美国为其“苹果汽车”生产电池
- java设计模式之模板方法
- MFC获取文件夹路径并得到该字符串
- maven打包报错找不到符号,由于找不到类中方法的解决思路
- 8岁小学生表白遭拒:被一部iPhone打败
- 拓端tecdat|R语言进行数据结构化转换:Box-Cox变换、“凸规则”变换方法
- B站视频下载方法之--手机下载后再转移至电脑
- 多元线性回归模型的特征选择:全子集回归、逐步回归、交叉验证
- matlab生成全黑图片,程序第一次可以运行,第二次运行图片是全黑的
- redis设计与实现-数据库篇