每个存根的RMI线程数

时间:2013-01-13 04:03:44

标签: java sockets rmi

我有以下问题让社区尝试回答:

- 假设您有一个具有N个线程的客户端应用程序(在同一个JVM中执行)。每个线程使用调用Naming.Lookup()获取存根到RMI远程对象。

  1. 客户端的RMI中间件将使用多少个套接字 应用
  2. 使用命令netstat时,您注意到服务器打开了一个 客户端机器中的套接字。对此有何解释? 存在那个插座?
  3. 这是分布式系统课程考试的问题。 希望你理解这些问题,我试着把它翻译成我所知道的最好的。

    感谢。

1 个答案:

答案 0 :(得分:2)

  

客户端应用程序的RMI中间件将使用多少个套接字?

这是不确定的,因为(a)关于这些远程对象所在位置的问题是不精确的,特别是它们中的任何两个是否共同位于同一主机中,如果是,那么它们是否都是使用同一个港口; (b)客户的联系汇集。如果线程都同时进行呼叫,则它们将是 N; 如果它们按顺序进行呼叫,则它可以低至1。它还取决于在导出远程对象时是否使用了客户端套接字工厂,以及如何实现CSF的equals()方法。

尽管如此,我并不认为任何审查员都有任何业务要​​求这个问题,因为上面提到的RMI规范并没有明确说明这一点,如果对此事没有完全保持沉默,这显然是模糊的连接。

  

使用命令netstat时,您注意到服务器在客户端计算机中打开了一个套接字。该套接字存在的解释是什么?

我从未注意到任何这样的事情,自1997年以来我一直在使用RMI,并且也写了一本关于它的书。服务器不执行任何此类操作,除非客户端向服务器发送回调存根,然后服务器调用回调,问题中不会出现任何回调。

总之,这些基本上都是毫无意义的问题,他们认为课程的价值是一个严峻的问题。如果任何人如设置他们想要辩论我会很乐意接受他们

第一个问题的唯一正确答案是“未指定”,而我能想到的唯一礼貌答案是“没有观察到这种现象”。 ['你在吸什么?'是可选的。]

编辑根据谷歌翻译,第二个问题以'假设你观察到......'开头。这一切都有所不同。答案是客户端将回调导出到服务器,如上所述。不需要吸烟。由于我上面提到的原因,第一个问题仍然毫无意义。