【发布时间】: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