Des problèmes de connexion à un serveur RMI qui est derrière un routeur
Question
Disons que l'adresse IP publique du routeur est 92.1.85.179
L'IP locale de l'ordinateur avec le serveur est 192.168.0.2
Le routeur est configuré pour transmettre 92.1.85.179:5678 à 192.168.0.2:5678
Dans le serveur je:
System.setProperty( "java.rmi.server.hostname" , "92.1.85.179" );
Registry registry = LocateRegistry.createRegistry( 5678 );
registry.rebind( "TheWebServer" , webServerInt );
Le client a:
Registry registry = LocateRegistry.getRegistry( "92.1.85.179" , 5678 );
server = (WebServerInterface) registry.lookup( "TheWebServer" );
Lorsque le client est sur le réseau local au serveur, il est ok. Lorsque le client est en dehors du réseau local, il se java.rmi.ConnectException: Connexion refusée à l'hôte: 192.168.0.2;
Il est évident que le serveur donne au client l'adresse IP de 192.168.0.2 car il ne figure pas dans le code, que je pensais que System.setProperty( "java.rmi.server.hostname" , "92.1.85.179" );
était censé changer.
Toute entrée serait grandement apprécié.
La solution
Vous devez exporter vos objets à distance sur le port 5678 aussi, et vous devez définir java.rmi.server.hostname avant d'exporter les objets à distance.