【问题标题】:Do RMI and web services both use a socket connection?RMI 和 Web 服务都使用套接字连接吗?
【发布时间】:2009-11-21 22:22:27
【问题描述】:

在另一个question 中,我担心使用需要五分钟才能完成的网络服务。我正在考虑在这个用例中使用 RMI 而不是 Web 服务..

但归根结底,Web 服务和 RMI 是否都使用 TCP 套接字进行底层连接? 5 分钟的 Web 服务调用是否比相同时间的 RMI 请求更不稳定?

请注意,在我们的例子中,我们谈论的是内部应用程序通信。


更新:这个问题源于我担心我们会遇到连接断开或其他需要 3-5 分钟才能完成的 Web 服务问题。这种担心可能完全不合理 - 我的另一个 question 的回复者表示,如果您同时控制客户端和服务器,您应该没问题。但我只是想更详细地了解为什么使用 Web 服务实现而不是 RMI 实现更不可能出现 5 分钟通话的断开连接。如果它们都依赖于套接字连接,那么这可以解释为什么没有区别......

【问题讨论】:

  • 不太稳定是什么意思?你观察到什么?
  • 我没有观察到任何事情——我只是沉迷在可能的问题上。对问题进行了澄清。

标签: java web-services sockets rmi communication-protocol


【解决方案1】:

如果一个远程调用需要 5 分钟才能完成,那么可能是因为实现该调用的操作很慢,而不是因为 Web 服务层本身很慢。如果您要使用 RMI 重新包装操作,它可能会同样慢。

只有在调用大量操作时,RMI 相对于 SOAP 的性能优势才会真正显现出来,而不是任何一个操作的速度,这仅仅是因为 RMI 比 SOAP 更有效。但它不会神奇地让缓慢的操作变得更快。

至于你关于套接字的问题,是的,当你走得足够远时,RMI 和 SOAP 都使用套接字级协议(在 RMI 的情况下是 IIOP 或 JRMP,在 SOAP 的情况下是 HTTP)。不过,这与您的问题无关。

【讨论】:

    【解决方案2】:

    RMI 主要用于 JRMP(在纯 Java 上下文中)或 IIOP(在非 JVM 上下文中),而 SOAP 消息通常(但不限于)通过 HTTP 发送。所有这三种有线协议都使用 TCP/IP,因此在这方面,选择 RMI 而不是 Web 服务没有优势。

    【讨论】:

    • RMI 根本不在非 JVM 上下文中使用。 RMI/IIOP 用于 J2EE 上下文。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 2016-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多