首页 >> 读书频道 >> 电脑 >> 关于远程方法调用(RMI)的实现
 
· Resin服务器平台介绍
· apache+resin
· 配置iis和resin1
· 安装 WebSphere
· Redhat+apach
· Tomcat IIS H
· Apache+Tomca
· JSWDK环境安装与配置
· Jakarta-Tomc
· JRun2.3平台介绍
· WebSphere应用服
· JDBC接口技术
 
· 有关生命的名言警句
· 我是钱[作者:郑渊洁]
· 吕氏春秋[作者:秦·吕不
· 五笔字根表
· 大长今[作者:柳敏珠]
· 韩国可爱卡通图片
· 泡沫之夏[作者:明晓溪]
· 谁是我的情人[作者:蔡宗
· 外国讽刺漫画:小白兔自杀
· 随园食单[作者:袁枚]
· 别坐52路公车
· 学会占星的第一本书[作者
 
· 喜剧学院
· 《善德女王》剧情介绍
· 魔女18号 剧情
· 丑女无敌剧情介绍
· 魔女幼熙剧情介绍
· 龙游天下剧情介绍
· 震撼世界的七日剧情介绍
· 静静的白桦林剧情介绍
· 心情日记—老公今天我想对
· 旗舰剧情介绍
· 佳人当道剧情介绍
· 你是我的命运剧情介绍
欢迎来到月影社区!如果您觉得这里不错,请推荐给您的朋友们。月影社区:http://wf66.com/

关于远程方法调用(RMI)的实现


查看有无更新版本

关键字:JSP 2006-9-4

 

远程方法调用
远程方法调用(Remote Method Invocation ,RMI)使用户能访问在另一
主机上的Java对象,并远程调用其方法。程序的对象是客户,而远程对象是服
务器。远程对象也可以是另一个远程服务对象的客户。通过使用持续性(串行
化和解串行化),本地对象和原始类型值可以作为参数传递给远程对象。这种
方式允许Java程序可以利用分布式计算将工作量分散到多个Java虚拟机上。
工作原理
RMI系统结构,在客户端和服务器端都有几层结构。
--------- ----------
| 客户 | | 服务器|
---------- ----------
| |
------------- ----------
| 占位程序 | | 骨干网 |
-------------- -----------
| |
------------------------------------
| 远 程 引 用 层 |
------------------------------------
| |
------------------------------------
| 传 输 层 |
------------------------------------
方法调用从客户对象经占位程序(Stub)、远程引用层(Remote Reference
Layer)和传输层(Transport Layer)向下,传递给主机,然后再次经传
输层,向上穿过远程调用层和骨干网(Skeleton),到达服务器对象。
占位程序扮演着远程服务器对象的代理的角色,使该对象可被客户激活。
远程引用层处理语义、管理单一或多重对象的通信,决定调用是应发往一个
服务器还是多个。传输层管理实际的连接,并且追追踪可以接受方法调用的
远程对象。服务器端的骨干网完成对服务器对象实际的方法调用,并获取返
回值。返回值向下经远程引用层、服务器端的传输层传递回客户端,再向上
经传输层和远程调用层返回。最后,占位程序获得返回值。
要完成以上步骤需要有以下几个步骤:
1、生成一个远程接口
2、实现远程对象(服务器端程序)
3、生成占位程序和骨干网(服务器端程序)
4、编写服务器程序
5、编写客户程序
6、注册远程对象
7、启动远程对象
具体实现如下:
1、生成一个远程接口
package c15.ptime;
import java.rmi.*;
public interface PerfectTimeI extends Remote {
long getPerfectTime() throws RemoteException;
}
2、实现远程对象(服务器端程序)
package c15.ptime;
import java.rmi.*;
import java.rmi.server.*;
import java.rmi.registry.*;
import java.net.*;
public class PerfectTime
extends UnicastRemoteObject
implements PerfectTimeI {
public long getPerfectTime()
throws RemoteException {
return System.currentTimeMillis();
}
public PerfectTime() throws RemoteException {
super();
}
public static void main(String[] args) {
System.setSecurityManager(
new RMISecurityManager());
try {
PerfectTime pt = new PerfectTime();
Naming.rebind(
"//zhouty:2005/PerfectTime" , pt);
System.out.println("Ready to do time");
} catch(Exception e) {
e.printStackTrace();
}
}
}
4、编译远程对象(服务器端程序)
javac -classpath . -d . PerfectTime.java
5、生成根和干(占位程序和骨干程序)
rmic -classpath . -d . c15.ptime.PerfectTime
6、注册远程对象
start rmiregistry 2005
7、启动服务器端程序
java -Djava.rmi.server.codebase=file:///d:/TestRMI/ c15.ptime.Per
fectTime
8、编写客户端程序
package c15.ptime;
import java.rmi.*;
import java.rmi.registry.*;
public class DisplayPerfectTime {
public static void main(String[] args) {
System.setSecurityManager(
new RMISecurityManager());
try {
PerfectTimeI t =
(PerfectTimeI)Naming.lookup(
"192.168.0.171:2005/PerfectTime");
for(int i = 0 ; i < 10; i++)
System.out.println("Perfect time =" +
t.getPerfectTime());
} catch(Exception e) {
e.printStackTrace();
}
}
}
9、编译客端程序
javac -classpath . -d . DisplayPerfectTime.java
10、修改JVM的配置文件 (客户机和服务器的都需要经过修改)
%JRE_HOME%\policytool.exe
11、启动客户程序
java -classpath . c15.ptime.DisplayPerfectTime
12、返回结果
Perfect time =967274884390
Perfect time =967274884450
Perfect time =967274884450
Perfect time =967274884450
Perfect time =967274884500
Perfect time =967274884500
Perfect time =967274884560
Perfect time =967274884610
Perfect time =967274884610
Perfect time =967274884610

<------------ 完 ------------->
参考:
《JAVA 编程思想》
《轻松掌握JBUILDER2》
《SUN JDK文档》

关于远程方法调用(RMI)的实现

[ 1 ]
关于远程方法调用(RMI)的实现 num

打印本页 关闭

关于我们版权声明本站导航友情连结作品演示 TOP↑