首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在RMI中传递远程参数

在RMI中传递远程参数
EN

Stack Overflow用户
提问于 2013-07-09 00:28:47
回答 1查看 864关注 0票数 1

我想确认一下RMI理论。

假设客户端A请求对服务器B的对象O的远程引用。

现在,如果在O接口(Interf)中有这样的方法: void foo(Interf obj);

当客户端A调用O.foo(O)时,它传递存根引用(在接收之前),然后服务器不使用它的本地引用,而是使用存根对象(由客户端接收),因此服务器对O方法的每次调用都将利用它的TCP/IP服务。

可以吗?

如果您认为这些细节可以提高我对RMI的理解,那么您可以随意添加一些细节。

问候

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-12 19:28:09

CORBA服务器(用于实现RMI/IIOP,而不是RMI/JRMP)通常实现“托管存根”优化。也就是说,如果服务器调用同一进程中对象存根上的方法,CORBA服务器通常会避免TCP/IP和线程池分派开销。相反,参数被复制,方法将在目标对象上被调用,结果对象被复制并返回。

作为参考,Java服务器通常实现这种优化。生成的存根类使用Util.isLocal方法来确定存根目标是否是本地的。接下来,调用Stub._servant_preinvoke以获取对本地servant的引用/代理,并使用Util.copyObjects (或Util.copyObject)来复制参数和返回对象。(异常处理、RemarshalException等还有额外的复杂性,但我已经概述了基本流程。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17531561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档