RMI中的stub的问题?

wendi 2003-12-01 02:30:29
客户机通过RMI调用服务器中的对象,stub是应该在客户机端生成还是在服务器端生成?rmic 是应该在客户端执行还是在服务器端执行?
那位可以大概的介绍一下RMI中的stub和sketelon?
...全文
110 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wendi 2003-12-01
  • 打赏
  • 举报
回复
回:
谢谢!
还有一点就是在实现远程调用时,服务器端包含的扩展了remote接口的接口的类文件.实现了前面接口的类的类文件和最后在服务器端用来绑定对象和名字并通知注册表的类的类文件和所有的stub文件不能包含在服务器的类路径中?这是什么原因?
hutlyx 2003-12-01
  • 打赏
  • 举报
回复
客户端打开套接字连接服务器上特定的端口,查找到正在运行的 注册表,因为注册表本身也是个远程对象,返回注册表远程对象的stub到本地,然后客户端通过stub同服务器通信,执行lookup方法,查找到远程接口,并返回这个远程对象的stub到本地,然后客户端对服务器端的访问完全通过这个stub来执行。
因为对象序列化时传送的只是对象的状态,并没有传送 执行的代码,所以需要将客户端需要找到类定义,先从本地的classpath中查找,如果没有,客户端试图从存储在注册表中的远程对象的codebase中查找。然后从codebase的路径中,下载类定义。当受到所有类定义,stub就开始调用服务器对象的相应方法了。

stub和sketelon分别是客户端和服务器段的代理,stub是个远程对象。都是用rmic在服务器端生成的。客户端访问的时候,就把stub下载到本地,所以都服务器段的调用实际上通过stub来执行。在jdk1.2之后,sketelon已经不用了,你可以把stub反编译了看看,里面是采用的反射来实现的。
apan_bj 2003-12-01
  • 打赏
  • 举报
回复
你自己写的程序,要把客户端与服务器端分开,你将stub文件放在服务器的类路径中有什么用?一起发布还有可能引来不必要的安全隐患。
hutlyx 2003-12-01
  • 打赏
  • 举报
回复
我没有看懂啊!

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧