java回顾rmi

搞java的不懂rmi好像说不过去。。 ,复习一遍。

参照http://www.iteye.com/topic/173909 

http://lzj0470.iteye.com/blog/426760 非常详细

步骤

1 准备接口Interfase(需继承Remote)和实现类Clazz(继承UnicastRemoteObject实现Interfase)

2 server:创建Clazz,绑定Naming.rebind ("p1", p1); (端口默认是1099 ? )—— 如此简单!

3 client:通过Naming.lookup获取即可:PerfectTime p1 = (PerfectTime)Naming.lookup ("rmi://localhost:1099/p1");

4 打开jvm1 ,执行set classpath=D:\ws\testWS\java-basic\WebRoot\WEB-INF\classes——start rmiregistry——start java rmi.PerfectTimeServer

(set classpath 要先start rmiregistry——start java rmi.PerfectTimeServer执行,不然报Caused by: java.lang.ClassNotFoundException: rmi.PerfectTime——奇怪)

  此时rmi会占用1099端口:

5 打开jvm2,执行set classpath=D:\ws\testWS\java-basic\WebRoot\WEB-INF\classes——rmic rmi.PerfectTimeImpl——java rmi.PerfectTimeClient

 我本机测试的时候,其实不需要执行(set classpath=D:\ws\testWS\java-basic\WebRoot\WEB-INF\classes——rmic rmi.PerfectTimeImpl) 好奇怪。。

___ PerfectTimeClient显然是在jvm2中写好的,但,现在既然是远程,它便不应该和server端代码写在一块,应该独立编写。很重要一点是,需要在编写及运行PerfectTimeClient前,把PerfectTime接口放置本地(通过codebase?  这个还不太清楚,我是直接拷贝的),这有些不合常理,但是似乎也是必须的。。。

 

完毕!

 

启动apache,复制rmi下面的class,然后,执行java -Djava.rmi.server.codebase=http://127.0.0.1/test/   rmi.PerfectTimeClient

发现,没任何效果,似乎默认在某处已经有个codebase,永远都无需rmic rmi.PerfectTimeImpl了。。。嗯,应该是我jdk是高版本的原因。 stub都可以动态生成了

http://www.iteye.com/topic/161485

 

还是不清楚这样的java rmi是什么原理。。郁闷。。RMI的缺省实现是 JRMP(Java Remote Method Protocol) 看来得看一下底层源码才行

 

 总结:

java的rmi使用起来还是比较简单的,就用到了 :

java.rmi.Remote 、 java.rmi.RemoteException 、 java.rmi.Naming 外加java自身提供的rmiregistry 、rmic

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值