J'essaie d'obtenir des objets distants à partir d'un serveur hébergé sur un réseau différent. Je peux me connecter sur la même machine et sur le même réseau, mais quand j'essaye de l'obtenir à partir du réseau différent je reçois:Connexion Java RMI via Internet
La connexion a refusé d'accueillir: 192.168.1.131; l'exception imbriquée est: java.net.ConnectException: la connexion a expiré: connect
Il semble que la fonction de recherche recherche un mauvais réseau. J'ai essayé d'utiliser System.setProperty mais cela ne fonctionne pas. Voici le code:
serveur
public class Main {
public static void main(String[] args) {
try{
System.out.println("Init server...\n");
TestInterface test = new TestImplement();
System.setProperty("java.rmi.server.hostname", "95.247.x.x");
System.out.println("Reg RMI...\n");
Registry rmiRegistry = LocateRegistry.createRegistry(5555);
rmiRegistry.rebind("Test" , test);
System.out.println("Reg completed!\n");
}catch(Exception e){
e.printStackTrace();
}
}
}
client
...
registryRMI = LocateRegistry.getRegistry("95.247.x.x",5555);
TestInterface testClient = (TestInterface)registryRMI.lookup("Test");
...
Ai-je besoin de mettre java.rmi.server.hostname
en pot client aussi bien?
Vérifiez si vous êtes en mesure de telnet sur le port 5555. – mkalsi
ainsi la question est pourquoi le client essaye de se connecter '192.168.1.131' .. peut-être que le registre lie l'instance à cette adresse .. l'avez-vous fait? – gusto2
@ gusto2 'Le registre lie l'instance à cette adresse' n'a absolument aucun sens. L'application * lie le * nom * à l'instance * via le * Registre *. Il n'y a pas de notion d'adresse dans l'opération 'Registry.bind()'. – EJP