所以我看到 Java 9 中删除了 RMI 上的 HTTP 隧道。
我们销售在 Tomcat 中运行的商业 Java 软件。我们的客户将其安装在他们的 Mac、Windows 和 Linux 服务器上。然后,公众可以使用 Java Swing 客户端界面访问该软件。它使用 RMI 与服务器软件进行通信。
我们的大多数客户都有防火墙,阻止访问除 80/443 以外的任何端口上的服务器。对于 Java 8 及更早版本,这不是问题,它可以在动态端口上使用 RMI,或者在防火墙阻止访问时切换到 HTTP。
但是,删除 Java 9 中的 HTTP 代理功能意味着我们的大多数客户将无法再使用我们当前架构的软件。对于我们的客户来说,将他们的防火墙和服务器配置为来自公众的 SSH 访问是不切实际且不安全的,尤其是对于运行 Windows 服务器的客户。
这是否意味着我们需要重写我们的应用程序架构以使用 RMI 以外的某些网络协议?或者有没有办法在 Java 9 中保留 RMI?完全放弃 RMI 将需要完全重写我们面向用户的应用程序代码,这不是一个具有成本效益的选择。