选择显示字体大小

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

(选自:java区,作者:038 (zzj038),时间:2000年08月28日)

远程方法调用

远程方法调用(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文档》


--
我思,故我在

※ 来源:.网易虚拟社区北京站 http://bj.163.com.[from: 202.104.29.154]
  


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons