Bonjour à tous,
Je suis actuellement en train de concevoir une application de type messenger, en utilisant le protocole RMI.

Le shéma de fonctionnement est le suivant :
- Un objet "gestionnaire de connexion" est enregistré dans le service de nommage du serveur.
- Il posséde en attribut une instance d'un objet "MessengerServer"
- Ce MessengerServer posséde lui une liste de tous les "Messenger" clients actuellement connectés.
- Le client récupére tout d'abord l'instance du "gestionnaire de connexion" via le service de nommage du serveur.
- Le client appele la méthode connect() du gestionnaire de connexion en lui passant un login et un password. Si ces paramètres sont corrects, le gestionnaire de connexion renvoie au client l'instance de l'objet MessengerServer.
- Le client pourra ainsi récupérer la liste des Messenger connectés...

Mon application fonctionne parfaitement en local, mais j'ai des soucis quand il s'agit de lancer serveur et client sur deux machines séparées.

Voici le code exécuté lors du lancement du serveur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
java.rmi.registry.LocateRegistry.createRegistry(1099);
MessengerServerImpl messengerServer = new MessengerServerImpl();
GestionnaireConnection gestionnaireConnection = new GestionnaireConnectionImpl(messengerServer);
Naming.rebind("GestionnaireConnection",gestionnaireConnection);
et voici le code éxécuté par le client pour récupérer le gestionnaire de connexion
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
this.gestionnaireConnection = (GestionnaireConnection) Naming
		.lookup("rmi://(adresse_ip_du_server)/GestionnaireConnection");
Visiblement mon client arrive à récupérer (avec un délai de 5-10 secondes qui me laisse perplexe) le gestionnaire de connexion, mais une exception est levée coté client lors de l'appel de la méthode connect() sur cet objet (ConnectException : connexionRefused to 10.0.0.1).