RMI - JRMP与IIOP的区别

5
我知道JRMP为每个调用请求打开一个新的套接字。另外,IIOP可以为多个请求共享单个打开的套接字。
根据维基百科的说法:
术语RMI的使用可能仅表示编程接口,也可能表示API和JRMP两者,而术语RMI-IIOP(读作:RMI over IIOP)表示RMI接口将大部分功能委托给支持CORBA实现。
我的论文中有一个问题,我必须说明该陈述是真还是假,其中一个问题是:
RMI服务器为多个调用请求共享单个套接字。
此时存在歧义,即考虑是JRMP还是IIOP服务器进行探测。如果问题只涉及RMI,那么是否安全地假设它是JRMP服务器而不是IIOP服务器?
希望我表达清楚了。

2
不,不能这样假设是安全的。这个问题含糊不清。 - skaffman
另外,您是否考虑过 JBoss 使用的池化 RMI 调用程序? - Michael
2个回答

4
我知道JRMP为每个调用请求打开一个新的套接字。

不,它不是这样的。RMI客户端使用连接池。

根据维基百科所述:

术语RMI的使用可能仅表示编程接口,也可能表示API和JRMP,而术语RMI-IIOP(读作:RMI over IIOP)则表示RMI接口将大部分功能委托给支持CORBA实现。

我认为这个说法是误导性的,我已经进行了更正。新措辞表明术语“RMI”可以指API或任何实现,包括JRMP、IIOP、JERI、JBoss Remoting等,而“RMI-IIOP”专门指RMI over IIOP。

RMI服务器在多个调用请求之间共享单个套接字。

该说法含糊不清、误导性且取决于实现。

如果问题仅涉及RMI,那么我是否可以安全地假设在这种情况下它是JRMP服务器而不是IIOP服务器?

不可以。但在这种情况下没有任何区别。


3
不,RMI可以共享套接字或根据需要创建它们,这取决于RMI客户端实现。这样的笼统说法是不正确的。

@Pavitar:但是那个答案是错误的。它根本不这样做。 - user207421
这取决于RMI客户端的实现,而不是服务器。 - user207421
2
@Mikaveli RMI连接池是在客户端实现的。这是唯一可能实现它的地方。想一想。如果您不同意,请提供您自己的参考资料。我的参考资料是《Java RMI:Java远程方法调用指南》,Pitt&McNiff,2001年,但我确实写了它。 - user207421
JRMP调用程序为每个在客户端到服务器上的请求创建一个新的客户端套接字。 - Michael
@Mikaveli 没错。JBoss JRMP客户端调用程序每个请求使用一个新的套接字。JDK内置的Sun客户端不会这样做。因此,这取决于客户端而不是服务器。Sun JRMP客户端执行连接池,这就是通过RMI主页描述的几个系统属性的作用,因此来自同一客户端的连续调用可以重用相同的连接,并且因此在服务器JVM中的同一线程中调用。服务器无法强制客户端重用连接,但客户端至少可以尝试重用连接。 - user207421
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接