一:工作原理
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,成功调用.
分享到:
相关推荐
客户端与服务端的代码 RMI全名叫做 remote method invocation
Remote Method Invocation是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法。 编写一个RMI的步骤 定义一个远程接口,此接口需要继承java.rmi.Remote 开发远程接口的实现类 创建...
Java RMI (Remote Method Invocation 远程方法调用)是用Java在JDK1.1中实现的,它大大增强了Java开发分布式应用的能力。
java proram for remote method invocation (RMI) successively run
This code configure in a example of remote method invocation (RMI)
Remote Method Invocation Program code
Java RMI(Remote Method Invocation)--Java的远程方法调用是Java所特有的分布式计算技术,它允许运行在一个Java虚拟机上的对象调用运行在另一个Java虚拟机上的对象的方法,从而使Java编程人员可以方便地在网络环境...
Remote Method Invocation ppt
Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象。远程方法调用特性使Java编程...
RMI是Remote Method Invocation(远程方法调用)的 所写。它允许一个Java程序调用网络中另一台计算机上的Java方法,就如调用本机的方法一样。实现RMI调用的程序和被调用的方法,都必须是Java代码,即客户端和服务器...
本文档主要讲述的是java_RMI技术讲解;RMI(Remote Method Invocation)为远程方法调用,是允许运行在一个Java虚拟机的对象调用运行在另一个Java虚拟机上的对象的方法。