Is there an alternative HTTP tunnel using RMI in Java 9?
So I see that the HTTP tunnel through RMI has been deleted in Java 9
We sell commercial Java software running in Tomcat Our customers install it on MAC, windows and Linux servers The public then uses the Java Swing client interface to access the software It uses RMI to communicate with the server software
Most of our customers have firewalls that block access to the server on any port other than 80 / 443 This is not a problem for Java 8 and earlier versions. It can use RMI on dynamic ports or switch to HTTP when the firewall blocks access
However, removing the HTTP proxy function in Java 9 means that most of our customers will no longer be able to use the software we currently build It is impractical and unsafe for our customers to configure firewalls and servers for public SSH access, especially for customers running Windows Servers
Does this mean that we need to rewrite our application architecture to use some network protocols other than RMI? Or is there a way to keep RMI in Java 9? Completely abandoning RMI requires completely rewriting user - oriented application code, and is not a cost - effective option
Solution
It seems that jdk-8023862 has abandoned the HTTP proxy from RMI, as described in the release notes of Java 8
As #jdk 8180642 suggests, it also asks for an alternative way to remove the HTTP proxy implementation from RMI One alternative might be to use SSH to tunnel through the proxy
In the link, you can click how can one make outgoing Java RMI calls through a local firewall? Find an article that suggests other implementations, such as socks and socket factories