【问题标题】:RMI to HTTP protocolRMI 到 HTTP 协议
【发布时间】:2016-08-09 18:52:10
【问题描述】:

我们的项目是一个传统的项目,它使用 RMI 来进行服务器和客户端之间的通信(使用 Swing)。

最近,我们希望将协议从 RMI 更改为 HTTP(为了防火墙安全)不要更改太多原始代码(保留原始服务器逻辑和 Swing GUI)。

有什么好的和成熟的方式来进行过渡吗?谢谢。

【问题讨论】:

  • 您在构建代码时是否考虑过使用 GoF 和/或 Java Core EE 模式?如果您有某种业务代理外观,您可以将服务实现 (RMI) 替换为 HTTP/REST 实现。
  • 不用,直接用java核心,不用EE或任何容器。
  • 您是否编写了 Java 接口来定义服务?这将允许您以最少的编码工作来替换它。一种更“极端”的方法是使用 Java 代理将运行时实现替换为新的实现。 (复杂且不太容易测试)
  • 我明白你的意思。这是好办法。所以我还是需要把我的服务器代码部署到一个servlet容器中,然后为原来的RMI服务接口提供一个rest API吧?
  • 当然 HTTP(同样是 REST)要慢一些。另请参见 docs.oracle.com/javase/6/docs/platform/rmi/spec/rmi-arch6.html

标签: java swing http rmi


【解决方案1】:

您可以将代码原样与 RMI 中内置的 RMI/HTTP 隧道一起使用。您只需安装随示例代码一起分发的 RMI-CGI servlet,对其进行适当配置,Bob 就是您的阿姨。

请参阅documentation。感谢@JoopEggen 提供链接。

【讨论】:

  • 我对这条隧道不是很熟悉,你有样品吗?真的很感激。 @EJP