1 pièce(s) jointe(s)
Problème de connexion à un hôte distant avec Java RMI
Bonjour à tous,
J'ai un problème de connexion sur un hôte distant avec JAVA RMI. J'ai cherché de mon côté et j'ai vu qu'il fallait mettre en place un Gestionnaire de sécurité avec un fichier qui porte l'extension .policy, c'est ce que j'ai fait (d'après moi le problème vient du gestionnaire de sécurité).
Je tiens quand même à préciser que mon code source fonctionne en local (le Serveur et le Client se trouvant sur la même machine). Par contre dés que je mets le Client sur une autre machine se trouvant (j'ai la neufbox de sfr) sur mon réseau local, j'ai un message d'erreur au niveau de la console ms-dos du client qui me dit (au passage les pare-feu sur les deux machines sont désactivés) :
Code:
1 2
| java.rmi.ConnectException: Connection refused to host: 192.168.0.1
java.rmi.ConnectException: Connection timed out |
Alors que je tente au niveau de mon code de me connecter au serveur qui a pour adresse ip : 192.168.1.80
Voici le code de mes classes :
Information.java :
Code:
1 2 3 4 5
| import java.rmi.*;
public interface Information extends Remote {
public String getInformation() throws RemoteException;
} |
TestRMIServer.java :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| import java.rmi.*;
import java.rmi.server.*;
public class TestRMIServer extends UnicastRemoteObject implements Information {
public TestRMIServer() throws RemoteException {
super();
}
public String getInformation()throws RemoteException {
return "bonjour";
}
} |
Client.java :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import java.rmi.*;
import java.rmi.server.*;
import java.util.*;
public class Client{
public static void main(String[] args) {
System.out.println("Mise en place du Security Manager ...");
System.setProperty("java.security.policy", "./fic.policy");
System.setSecurityManager(new RMISecurityManager());
try {
Remote r = Naming.lookup("rmi://192.168.1.80/TestRMI");
if (r instanceof Information) {
String s = ((Information) r).getInformation();
System.out.println("chaine renvoyee = " + s);
}
} catch (Exception e) {
e.printStackTrace();
}
}
} |
Serveur.java :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| import java.io.*;
import java.rmi.*;
import java.rmi.server.*;
import java.util.*;
public class Serveur{
public static void main(String[] args) {
try {
System.out.println("Mise en place du Security Manager ...");
System.setProperty("java.security.policy", "./fic.policy");
System.setSecurityManager(new RMISecurityManager());
TestRMIServer testRMIServer = new TestRMIServer();
System.out.println("Enregistrement du serveur");
Naming.rebind("TestRMI", testRMIServer);
System.out.println("Serveur lance");
} catch (Exception e) {
System.out.println("Exception capturée: " + e.getMessage());
}
}
} |
fic.policy :
Code:
1 2 3
| grant {
permission java.security.AllPermission;
}; |
Les commandes que je tape dans l'ordre respectivement sous ms-dos :
Code:
1 2 3 4 5 6 7 8 9
|
REM inutile de faire un rmic -vcompat, la dernière jvm
REM le fait automatiquement à la compilation des classes
cd \
cd Hello*
start rmiregistry
javac Information.java TestRMIServer.java Serveur.java Client.java
java Serveur
java Client |
Si quelqu'un peut me dire s.v.p, pourquoi ce code ne fonctionne pas entre ces deux machines distantes ???
Merci d'avance à tous pour vos réponses