- 浏览: 309447 次
- 性别:
- 来自: 大连
文章分类
- 全部博客 (272)
- java (42)
- c (49)
- 算法 (29)
- 汇编语言 (3)
- 字符集 (3)
- error (3)
- 搜索引擎 (2)
- 互联网 (18)
- linux (12)
- 网络 (20)
- VMWare (1)
- 面试 (7)
- c++ (55)
- 设计模式 (3)
- db (9)
- office (2)
- FS (1)
- rest (3)
- Ajax (2)
- Spring (2)
- Hibernate (3)
- matlab (1)
- load balancing (8)
- 分布式计算 (2)
- 易语言 (1)
- apache tomcat (1)
- 测试 (1)
- 数据结构 (5)
- 数学 (13)
- 服务器 (9)
- 读后感 (4)
- 好书介绍 (1)
- script (3)
- wordpress (2)
- delphi (21)
- pascal (8)
- xml (3)
- 趣味 (1)
- PHP (3)
- python (13)
- DLL (4)
- openGL (8)
- windows (2)
- QT (28)
- django (7)
- jquery (1)
- 数据挖掘 (7)
- nginx (1)
- js (1)
- mac (1)
- hadoop (3)
- 项目管理 (1)
- 推荐系统 (1)
- html (1)
最新评论
-
晴天1234:
related remove:attention.ibus和u ...
UBUNTU的默认root密码是多少,修改root密码 -
美丽的小岛:
美丽的小岛 写道如上配置好就得了。提示没有OpenGl.dll ...
OpenGL学习入门之VS2010环境配置 [转] -
美丽的小岛:
如上配置好就得了。提示没有OpenGl.dll之类的,再增加入 ...
OpenGL学习入门之VS2010环境配置 [转] -
美丽的小岛:
主要是理清哪两个对象之间的关系,是信号与所有槽的关系或者是槽与 ...
QT之DisConnect -
美丽的小岛:
LPCTSTR类型:L表示long指针 这是为了兼容Windo ...
QString与各种字符串之间的转化
一、关于RMI
对于远程,有些时候会想到FTP,HTTP,NFS,IMAP.POP等这些协议,但这些都是主机之间移动文件和数据的信号。另外还有一个是一台主机运行另一台主机的程序,例如Telnet等。而RMI(Remote Method Invocation)正是这个类型。
远程/本地对象区别:远程的对象驻留在不同的虚拟机中,向远程方法传参数和返回结果。
二、RMI机制
对于这种思想的实现机制有三个:
对于简单类型:按值传递
对于实现Remote接口的对象:以远程引用传递,允许接收方法调用远程对象上的方法,这与向本地JAVA方法传递本地引用的方法相似。
对于没有实现Remote接口的对象:按值传递(序列化)
三、RMI分层
服务器程序 | ---------------------------- | 客户端程序 |
骨架 | ---------------------------- | 桩 |
过程引用 | ---------------------------- | 过程引用 |
传输层 | --------Internet--------- | 传输层 |
这样的分层有点像网络的分层关系。
四、实例
1.服务器接口继承Remote
import java.rmi.* ; import java.rmi.server.*; public interface TestRMIServer extends Remote{ public String getMessage(String str) throws RemoteException ; }
2.服务器继承UnicastRemoteObject并间接实现Remote(TestRMIServer接口)
import java.rmi.* ; import java.rmi.server.* ; public class TestRMIServerImpl extends UnicastRemoteObject implements TestRMIServer{ public TestRMIServerImpl() throws RemoteException{ super() ; } public String getMessage(String str) throws RemoteException { System.out.println(str) ; return "success" ; } public static void main(String arg[]){ try{ TestRMIServerImpl instance = new TestRMIServerImpl() ; Naming.rebind("test",instance) ; System.out.println("Server Registered") ; }catch(Exception e){ System.out.println(e) ; } } }
3.编写TestClient类为客户端
import java.io.*; import java.rmi.*; public class TestClient{ public TestClient(){ try{ BufferedReader input=new BufferedReader(new InputStreamReader(System.in)); String s=input.readLine(); TestRMIServer testServer=(TestRMIServer)Naming.lookup("rmi://127.0.0.1/test"); String str=testServer.getMessage(s); System.out.print(str); }catch(Exception e){System.out.println(e);} } public static void main(String s[]){ new TestClient(); } }
4.如下的步骤进行操作
javac 对所有的类进行编译
rmic编译后会产生一个TestRMIServerImpl_Stub.class的文件(放在客户端的)
start rmiregistry看前的转载<转>网络编程RMI ,这个打开会有一个黑屏的。
policytool用的设置一些权限,具体如下
由添加规则项目----》添加权限----》权权限,然后按下面这样选点确认与完成:
5.测试
java TestRMIServerImpl运行服务器
如下图运行客户端
出现上面的东西,这个实验成功了。
6.可能会出现的问题
6.1当忘记开启注册表时,会出现下面的错误:
6.2 当没有开启服务器时,会出现这样的错误:
好了,就这样了,如果用两个或更多机器去调用服务器的方法,在编译后的.class文体中,选三个复制(TestRMIServerImpl_Stub.class,TestRMIServer.class,TestClient.class)过去客户机器就可以了,否则,客户机会错的。
发表评论
-
推荐!国外程序员整理的Java资源大全
2015-12-15 10:14 670本文由 ImportNew - 唐 ... -
jsoup select 选择器
2015-12-09 14:03 986问题 采用CSS或类似jquery 选择器(selecto ... -
xmlbeans问题(深刻)
2015-11-12 23:08 1192运行scomp,路径永远是一个问题; 1.Program ... -
spring配置一个简单的数据连接池(dbcp)
2015-11-12 14:16 8251.文件结构 2.包结构 3.spring.x ... -
java泛型之通配符的使用
2015-11-12 12:15 713转自: http://blog.csdn.net/lone ... -
Ubuntu下安装JDK
2015-05-02 18:42 561安装JDK: 1.下载 http://www ... -
TCP/IP,Http,Socket的区别
2014-07-27 00:47 500大学学习网络基础的时 ... -
Delphi开发DLL,Java调用DLL
2014-01-01 16:40 1327用一个小例子来示范一下,不写文件字。 第一步 第二步, ... -
如何在Java中调用DLL方法<转>
2013-12-30 13:36 723Java语言本 ... -
Java对存储过程的调用方法
2013-05-14 09:29 800//一:Java如何实现对存储过程的调用: // A ... -
谈谈对象和XML文件的转换 <转>
2013-04-12 14:18 1053很多时候,我们开发 ... -
详解Java解析XML的四种方法<转>
2013-04-12 14:01 978XML现在已经成为一种通用的数据交换格式,它的平台无关性, ... -
js实现两边广告流动的效果<转>.
2013-01-26 18:41 916<!DOCTYPE html PUBLIC " ... -
50个最好的wordpress插件
2013-01-17 18:53 1976这些wordpress插件都按照 ... -
URLClassLoader例子
2012-11-22 15:22 1407学着写一个servlet服务器,里面对servlet的处理就得 ... -
关于JAVA配置文件的小记录
2012-11-20 15:16 1009配置文件一般会为编写编程提供方便与灵活的特点,最近看tomca ... -
搜索有点失望也有点可怕
2012-10-26 11:44 1348想看看最近那个搜索引擎比较好一点,做了一个实验,关 ... -
关于Channel学习
2012-10-07 15:12 1122java的新I/O流,有点意思,看看相关的类,其实就这几个就能 ... -
Buffer类与ByteBuffer类(来自JDK)
2012-10-07 10:10 12451. 类 Buffer(public abst ... -
运行控制台命令(java)
2012-10-07 08:30 2919有时候我们想用java去调用系统的命令实现一些功能,这个功能 ...
相关推荐
Java RPC和RMI代码实战,有关键注释,为最简案例。Maven搭建,JDK8编译。 RPC体验:依次运行RpcProvider和RpcConsumer类。 RMI体验:RMITest中依次运行testServer和testClient方法。
在这个"SpringRMI小例子"中,我们将深入探讨如何利用Spring框架来增强RMI的功能,使其更加灵活和易于管理。 首先,我们需要理解Spring框架在RMI中的角色。Spring提供了对RMI的高级抽象,通过其`org.springframework...
在这个"Spring RMI小例子"中,我们将深入理解Spring如何简化RMI的使用,以及如何通过它实现跨网络的交互。 首先,RMI允许Java对象在不同的JVM之间进行通信,仿佛它们都在同一个进程中运行。Spring通过提供自动注册...
RMI(Remote Method Invocation)是Java中用于构建分布式应用程序的关键技术。它允许对象在不同的Java虚拟机(JVM)之间进行交互,仿佛它们都在同一台机器上。RMI是Enterprise JavaBeans(EJB)的基础,使得开发...
RMI(Remote Method Invocation,远程方法调用)是Java平台中用于分布式计算的一种技术,它允许一个Java对象调用另一个在不同 JVM(Java虚拟机)上的对象的方法,从而实现跨网络的通信。Java RMI 提供了一种透明的...
在本示例中,我们将探讨如何使用Spring RMI创建一个小的应用程序,这通常涉及到服务器端(服务提供者)和客户端(服务消费者)的设置。 首先,让我们了解Spring RMI的核心概念: 1. **接口定义**:在RMI中,我们...
RMI(Remote Method Invocation,远程方法调用)是Java平台中的一个重要特性,它允许Java对象在不同的Java虚拟机之间进行通信,实现分布式计算。RMI是Java开发分布式应用程序的基础,尤其在构建分布式服务和微服务...
这个“RMI基础代码小程序”很可能是为了演示如何使用RMI进行基本的远程通信。 在Java RMI中,有以下几个核心概念: 1. **远程接口(Remote Interface)**:这是定义远程方法的接口,它扩展了java.rmi.Remote接口。...
Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种分布式计算技术,它允许Java对象在不同的网络环境中进行交互,就像它们在同一个进程内一样。RMI是Java在分布式系统领域的核心特性,极大地...
根据提供的文件信息,我们可以深入探讨Java RMI(Java Remote Method Invocation)的相关知识点,包括其概念、原理、体系结构以及一个具体的示例。 ### RMI的概念 RMI是一种Java技术,它允许开发者创建分布式应用...
**基于JAVA RMI的聊天室** Java Remote Method Invocation(RMI)是Java平台提供的一种用于在分布式环境中调用远程对象的方法。在这个“基于JAVA RMI的聊天室”项目中,开发者利用RMI技术构建了一个简单的多用户...
本项目"rmi服务端与客户端小程序"提供了简单易懂的示例,帮助初学者快速理解和上手RMI。 1. **RMI基本概念** - **远程对象**:在远程JVM上运行的对象,可以通过RMI接口被本地对象调用。 - **接口**:定义了远程...
【简单的RMI程序】是一个基于Java RMI(Remote Method Invocation,远程方法调用)技术的小型应用程序,用于实现会议管理功能。在这个项目中,学生或开发者可以学习如何使用RMI来创建分布式系统,使得不同计算机上的...
### RMI基础知识与实践 #### 一、Java RMI简介 Java Remote Method Invocation (RMI) 是Java平台提供的一种分布式计算技术,允许开发者在不同Java虚拟机(JVM)之间调用远程对象的方法,从而实现分布式应用程序的...
### Java RMI (Remote Method Invocation) 概念与实践 #### 一、Java RMI简介 Java RMI(Remote Method Invocation)是一种允许调用不同Java虚拟机(JVM)上方法的机制。这些JVM可能位于不同的机器上,也可能在同一...
Spring的面向切面编程(AOP)可以与RMI集成,提供日志记录、性能监控、安全控制等功能。通过定义切点和通知,可以在RMI调用前后执行特定逻辑。 ### 5. Spring RMI优化 - **RMI超时设置**:可以配置RMI连接和操作的...
这可能是用来管理日志记录的类或服务,可能与RMI服务端或客户端的日志记录功能有关。日志管理对于分布式系统来说至关重要,因为它可以帮助开发者追踪和调试系统中的问题。通常,日志管理器会提供记录、存储、检索和...
在文件"20093356谭进仕"中,可能会包含这次会议的详细记录、技术报告或者是一个案例研究,涵盖了上述话题的具体实现和经验分享。通过深入学习和理解这些内容,开发者可以更好地掌握Web服务器、RMI和Socket在实际项目...