Let's say the public IP of the router is 92.1.85.179
The local IP of the computer with the server is 192.168.0.2
The router is set to forward 92.1.85.179:5678 to 192.168.0.2:5678
In the server I have:
System.setProperty( "java.rmi.server.hostname" , "92.1.85.179" );
Registry registry = LocateRegistry.createRegistry( 5678 );
registry.rebind( "TheWebServer" , webServerInt );
The client has:
Registry registry = LocateRegistry.getRegistry( "92.1.85.179" , 5678 );
server = (WebServerInterface) registry.lookup( "TheWebServer" );
When client is on the network local to the server it's ok. When the client is outside the local network it gets java.rmi.ConnectException: Connection refused to host: 192.168.0.2;
Obviously the server is giving the client the IP of 192.168.0.2 as it doesn't appear in the code, which I thought System.setProperty( "java.rmi.server.hostname" , "92.1.85.179" );
was supposed to change.
Any input would be greatly appreciated.
You need to export your remote objects on port 5678 too, and you need to set java.rmi.server.hostname before you export any remote objects.