一:工作原理
RMI系统结构,在客户端和服务器端都有几层结构。
--------- ---------
| 客户对象| | 远程对象|
--------- ---------
| | | |
------------------------------ ---------------------------------
| 占位程序 Stub | | 骨干网 Skeleton |
------------------------------- ------- ------------------------
| | | |
-----------------------------------------------------------------
| 远 程 引 用 层 Remote Reference Layer |
------------------------------------ ----------------------------
| |
------------------------------------
| 传 输 层 Transport Layer |
------------------------------------
方法调用从客户对象经占位程序(Stub)、远程引用层(Remote Reference
Layer)和传输层(Transport Layer)向下,传递给主机,然后再次经传
输层,向上穿过远程调用层和骨干网(Skeleton),到达服务器对象。
占位程序扮演着远程服务器对象的代理的角色,使该对象可被客户激活。
远程引用层处理语义、管理单一或多重对象的通信,决定调用是应发往一个
服务器还是多个。传输层管理实际的连接,并且追追踪可以接受方法调用的
远程对象。服务器端的骨干网完成对服务器对象实际的方法调用,并获取返
回值。返回值向下经远程引用层、服务器端的传输层传递回客户端,再向上
经传输层和远程调用层返回。最后,占位程序获得返回值。
(以上为引用他人原话)
二:rmi相关类
rmi由5个包和3个应用工具组成:
java.rmi 组织客户端的rmi类,接口和异常
java.rmi.sever 组织服务器端的rmi类,接口和异常
java.rmi.registry 组织用于管理rmi命名服务的类
java.rmi.dgc 组织用于管理分布式垃圾收集的类
java.rmi.activation 组织用于实现按需缉获的rmi服务的类
rmic 编译器,生成stub和sketon
rmiregistry 一个为rmi提供命名服务的服务器,这项服务把名字和对象关联在一起
rmid 一个支持rmi激活框架的服务器
但是大多数情况下,我们只需要使用每个包的一部分方法和接口就可以成功的实现一个使用rmi分布式解决方案.
三:步骤
要完成以上步骤需要有以下几个步骤:
1、生成一个远程接口
2、实现远程对象(服务器端程序)
3、生成占位程序和骨干网(服务器端程序)
4、编写服务器程序
5、编写客户程序
6、注册远程对象
7、启动远程对象
四:一个简单应用
一共有三个java类,远程接口,服务端程序,客户端程序
远程接口:
import java.rmi.*;
public interface HelloIn extends java.rmi.Remote{
String sayHello() throws RemoteException;
}
服务端程序:
import java.rmi.*;
import java.net.*;
import java.rmi.registry.*;
import java.rmi.server.*;
public class Hello extends java.rmi.server.UnicastRemoteObject implements HelloIn{
public Hello() throws RemoteException{
super();
}
public String sayHello() throws RemoteException{
return "Hello,World!";
}
public static void main(String[] args){
//System.setSecurityManager(new java.rmi.RMISecurityManager());
try{
Hello h=new Hello();
java.rmi.Naming.rebind("hello",h);
System.out.print("Ready......");
}
catch(Exception e){
e.printStackTrace();
}
}
}
rmic Hello 生成Stub 和 Skeleton
start rmiregistry 执行服务端程序前在命令行方式下启动rmi的注册程序
java Hello 启动服务器
客户端程序:
import java.rmi.*;
import java.rmi.registry.*;
public class Helloworld{
public static void main(String[] args){
//System.setProperty( "java.security.policy", "client.policy" );
//System.setSecurityManager(new java.rmi.RMISecurityManager());
try{
HelloIn hi=(HelloIn)Naming.lookup("//127.0.0.1/hello");
for(int i=0;i<10;i++){
System.out.println(hi.sayHello());
}
}
catch(Exception e){
e.printStackTrace();
}
}
}
编译:javac Helloworld.java
最后执行java Helloworld 控制台打印出 Hello,World,成功调用.
分享到:
相关推荐
远程方法调用(Remote Method Invocation,RMI)是Java平台中一种用于分布式计算的技术,它允许Java对象在不同的 JVM(Java虚拟机)之间调用方法,仿佛这些对象都在同一个JVM中一样。RMI是Java EE(现在被称为...
### Remote Method Invocation (RMI) – 远程方法调用详解 #### 一、RMI 概述 **远程方法调用**(Remote Method Invocation, RMI)是Java平台中的一个核心概念和技术,它允许开发者创建分布式应用,在这些应用中,...
Java Remote Method Invocation(Java RMI)是一种允许分布式应用程序在Java平台上运行的技术。它允许在不同的Java虚拟机(JVM)上运行的对象之间调用方法,从而实现分布式计算和信息-sharing。 Java RMI使用对象...
Java Remote Method Invocation(Java RMI)是一种允许开发者创建分布式应用程序的技术。Java RMI 允许对象在另一个 Java 虚拟机(JVM)上调用远程 Java 对象的方法,可能在不同的主机上。Java RMI 使用对象序列化来...
Remote Method Invocation是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法。 编写一个RMI的步骤 定义一个远程接口,此接口需要继承java.rmi.Remote 开发远程接口的实现类 创建...
Java Remote Method Invocation(RMI)是Java平台提供的一种用于在分布式环境中进行对象间通信的技术。RMI允许一个Java对象在某台计算机上执行其方法,而这个对象实际上存在于另一台计算机上。这种技术使得开发者...
Java Platform, Standard Edition 的 Java Remote Method Invocation API Guide 介绍了 Java Remote Method Invocation(Java RMI)的概念和应用。Java RMI 是一种分布式应用程序开发技术,允许对象在不同的 Java ...
Java Platform, Standard Edition 的 Java Remote Method Invocation (Java RMI) 是一种允许创建分布式应用程序的技术。Java RMI 允许对象在另一个 Java Virtual Machine (JVM) 上的远程 Java 对象上调用方法,可能...
Java Remote Method Invocation(Java RMI)是 Java 平台提供的一种分布式应用程序开发技术,允许对象在不同的 Java 虚拟机(JVM)上调用远程 Java 对象的方法。RMI 使用对象序列化来 marshal 和 unmarshal 参数,...
Java Platform, Standard Edition 的 Java Remote Method Invocation(Java RMI)允许您创建分布式应用程序。Java RMI 允许对象在另一个 Java Virtual Machine(JVM)上调用远程 Java 对象的方法,可能位于不同的...
Java RMI(Java Remote Method Invocation,Java 远程方法调用)是一种允许 Java 对象在不同的 Java 虚拟机(JVM)上进行方法调用的一种机制。RMI 使用对象序列化来 marshal 和 unmarshal 参数,并且支持真正的面向...
Java Remote Method Invocation(Java RMI)是一种允许对象在远程Java虚拟机(JVM)上调用方法的技术。RMI使用对象序列化来 marshal 和 unmarshal 参数,不会截断类型,支持真正的面向对象的多态性。然而,RMI应用...
Java RMI(Remote Method Invocation)--Java的远程方法调用是Java所特有的分布式计算技术,它允许运行在一个Java虚拟机上的对象调用运行在另一个Java虚拟机上的对象的方法,从而使Java编程人员可以方便地在网络环境...
Java Remote Method Invocation (Java RMI) 是Java平台标准版(Java SE)中的一部分,它允许对象在不同的Java虚拟机(JVM)之间进行远程方法调用,这些JVM可能运行在不同的主机上。RMI利用Java的对象序列化机制来...
在Java编程领域,远程方法调用(Remote Method Invocation,RMI)是一种强大的技术,它允许在不同的Java虚拟机(JVM)之间透明地调用对象的方法。标题"RMI.zip_remote"表明这是一个与RMI相关的代码示例压缩包,而...
Java RMI(Remote Method Invocation,远程方法调用)是一种在分布式环境中进行对象间通信的技术,它允许一个Java对象调用另一个在不同 JVM(Java虚拟机)上的对象的方法。在这个"RMI-remote-file-transfer.rar"项目...
Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象。远程方法调用特性使Java编程...
Java Remote Method Invocation (RMI) 是Java平台提供的一种机制,允许在不同的Java虚拟机之间进行对象的方法调用,跨越网络连接。RMI是Java分布式计算的核心技术,它使得开发者能够构建分布式应用程序,使得代码...
### Java RMI (Remote Method Invocation) 概念与实践 #### 一、Java RMI简介 Java RMI(Remote Method Invocation)是一种允许调用不同Java虚拟机(JVM)上方法的机制。这些JVM可能位于不同的机器上,也可能在同一...