简介篇
RMI全称Remote Method Invocation(远程方法调用),是一种计算机之间对象互相调用对方函数,启动对方进程的一种机制,使用这种机制----采用stubs 和 skeletons 来进行远程对象(remote object)的通讯,某一台计算机上的对象在调用另外一台计算机上的方法时,使用的程序语法规则和在本地机上对象间的方法调用的语法规则一样。调用远程对象和调用本地对象同样方便。
RMI采用JRMP(Java Remote Method Protocol)通讯协议,是构建在TCP/IP协议上的一种远程调用方法。
RMI的组成:
(1) 远程服务的接口定义(JAVA中定义一个接口继承java.rmi.Remote)
(2) 远程服务接口的具体实现(JAVA中实现这个接口)
(3) 桩(Stub)和框架(Skeleton)文件(JAVA产生stub)
(4) 一个运行远程服务的服务器
(5) 一个RMI命名服务,它允许客户端去发现这个远程服务
(6) 类文件的提供者
(7) 一个需要这个远程服务的客户端程序
(其他的网上有很多)
学习篇
JAVA RMI看起来很简单,但是网上的资料很少。
现在大部分的IDE都是Eclipse我们不能在Eclipse中像一个JAVA应用程序那样来运行一个RMI程序。
下载EMI的Eclipse插件方便开发,下载地址:
http://www.genady.net/rmi/v20/downloads.html
插件的安装解压后将features和 plugins分别拷到eclipse的对应文件夹中。
这时重新启动Eclipse就可以看到工具栏上多了一个RMI的图标(如果你的是MyEclipse,可能要切换到JAVA视图-----在右上角上)。
你可以启动你的Local Registry。
默认绑定的端口是1099,要改变端口可以在右键时Run As/Run Configuration …弹出一个对话框中。选择RMI Application,然后右边选RMI registry/lounch a new rmiregistry下方的Start new registry port on后面输入你的端口。如下图所示:
然后Apply.
问题篇
1. java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:1099 connect,resolve) 访问权限限制,因为RMI的服务需要授权,外部程序才能访问,所以我们要改动 jre的安全配置文件,来开放权限,具体如下: 打开你的jdk目录下的这个文件 C:\Program Files\Java\jdk1.5.0_04\jre\lib\security\java.policy 在文件最后加入下面代码grant {
permission java.net.SocketPermission "*:1024-65535","connect,accept";
permission java.net.SocketPermission "*:80","connect";
};
你可以编写一个computer.policy文件:
grant{
permission java.security.AllPermission;
};
然后在Eclipse中的配置如下:上面提到的对话框中划线部分:
2、java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested
exception is:
java.net.ConnectException: Connection refused: connect
这种错误可能是你的Regitry 的端口和你程序里面的绑定名字“rmi://127.0.0.1:1099/rmi1”中的端口
不一致。检查你的服务端程序和你的客户端程序中的访问端口和服务名一致。
3、java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: org.xbeans.communication.rmi.receiver.******_Stub
java.rmi.NotBoundException: receiver1这种错误是你的Server.codebase没有指向的的stub所在
的位置:
4.retrieval object?
点击左下方的
5.rmi 服务端通知客户端?
这个问题想了很久,一种是接口方法是可以有返回值的。另外一种是把客户端的stub传过去,操作这个
stub就相当于操作客户端的方法。
谢谢参考
- 大小: 137.4 KB
分享到:
相关推荐
RMI(Remote Method Invocation,远程方法调用)是Java提供的一种分布式计算模型,它允许一个Java应用程序通过网络调用另一个远程计算机上的对象的方法。RMI是Java开发分布式应用的重要工具,使得开发者可以像调用...
### Java+JDK6 学习笔记精要 #### 一、Java概览与起源 Java,由Sun Microsystems公司的James Gosling在Green Project项目中创建,最初命名来源于他窗户外的一棵橡树(Oak)。随着全球信息网的兴起,Java Applet成为...
### Java+JDK6学习笔记知识点详解 #### 一、Java简介 - **起源与历史:** - 最初由Sun公司的Green Project发起,旨在创建一个名为Star7的应用程序编程语言。 - 名称来源于创始人James Gosling窗外的一棵橡树...
从给定的文件信息来看,标题和描述都指向了“Java分布式学习笔记01分布式Java应用”,这显然是关于Java在分布式环境下的应用和技术的学习资料。虽然提供的部分内容由于格式问题难以直接解析,但我们可以根据标题、...
Java分布式应用学习笔记 在Java世界中,分布式应用是指由多个独立组件通过网络通信协同工作的系统。这种架构模式常用于构建大规模、高可用性、可扩展的系统。本笔记将深入探讨Java分布式应用的核心概念、技术和实践...
非常详细java RMI接口编程笔记,实例 且带有详细的说明。
Java学习漏洞Java漏洞学习代码及笔记项目TODO剩余代码完善漏洞使用和分析笔记准备中目前文章分析地址在每个包下package-info.javaJava反序列化Java 应用程序Java类加载shiro资本分析weblogic缓存分析快三平台jackson...
### JAVA学习笔记1:深入解析J2EE框架与关键技术 #### J2EE模式与Value Object概念 在JAVA学习之旅中,深入理解J2EE(Java 2 Platform, Enterprise Edition)框架是至关重要的一步。J2EE是专为开发企业级应用而...
### 匡彬JAVA学习笔记知识点总结 #### 一、Java虚拟机(JVM) - **概念**: Java虚拟机(JVM)是一种能够执行Java字节码的虚拟机,它为Java程序提供了一个运行时环境。JVM的主要功能包括内存管理、垃圾回收、安全性和...
这份"Java demo 算法笔记"集合了Java开发中的多种关键知识点,包括但不限于基础语法、框架源码解析、算法实现以及并发处理等内容,对于学习和提升Java编程技能具有极大的帮助。 首先,我们来探讨Java的基础部分。...
### JAVA学习笔记(林信良 编著 教程) #### 重要知识点解析 **一、Java概述** 1. **起源与发展:** - Java 最初由 Sun Microsystems 的 James Gosling 在 Green Project 中开发,其最初的命名灵感来源于 ...
Java EE是针对企业级应用开发的平台,扩展了Java SE的功能,提供了如JavaServer Pages (JSP)、Servlet、Enterprise JavaBeans (EJB)、Java Remote Method Invocation (RMI)等服务和API,支持分布式、多层结构的Web...
### JAVA学习笔记(全面) #### 一、Java技术基础 ##### 1.1 编程语言 编程语言是计算机能够理解和执行的一种指令集。根据不同的编程思维和应用场景,编程语言可以分为以下几类: - **机器语言**:由二进制代码...
JavaThings - Java安全漫谈笔记相关《Java安全漫谈》是我在写的一点Java学习相关的随笔,不是很严谨,也不是啥高。这个存储库主要是记录并整理一下,附加一些代码。Java 安全漫谈目录Java安全漫谈 - 01.Java的动态...
3. **RMI(Remote Method Invocation)**:Java RMI允许对象通过网络调用另一个对象的方法,如同调用本地方法一样。 4. **JMS(Java Message Service)**:Java消息服务提供了一种与语言无关的API,用于在分布式环境...