RMI: Erreur "RemoteException occurred in ser
hanagi
Messages postés
141
Statut
Membre
-
arth Messages postés 10414 Statut Contributeur -
arth Messages postés 10414 Statut Contributeur -
Bonjour tout le monde,
j'ai créé une application en java RMI, je lance le serveur sans problème, j'execute le client est tout marche bien mais, maintenant je veux que le registry (l'annuaire qui permet au serveur de faire son bind) soit sur une autre machine (ou au moins sur un projet différent pour tester), alors j'ai créé un projet avec une classe contenant le code suivant :
lorsque j'execute cette classe, le registry est créé, car si j'essaie de faire un "java.rmi.registry.LocateRegistry.createRegistry(1099);" dans une autre classe on me dit que le port 1099 est occupé. Mais dès que j'execute le serveur en faisant un bind ou rebind de cette façon :
on me donne l'erreur suivante:
java.rmi.ConnectException: Connection refused to host: localhost; nested exception is:
java.net.ConnectException: Connection refused: connect
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source)
at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)
at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)
at sun.rmi.server.UnicastRef.newCall(Unknown Source)
at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
at java.rmi.Naming.rebind(Unknown Source)
après cela j'ai remplacé la ligne:
par :
et cette fois ci, l'erreur est :
Avez vous une idée sur la solution ? si oui, ce serait vraiment sympa de me la communiquer.
Merci d'avance
j'ai créé une application en java RMI, je lance le serveur sans problème, j'execute le client est tout marche bien mais, maintenant je veux que le registry (l'annuaire qui permet au serveur de faire son bind) soit sur une autre machine (ou au moins sur un projet différent pour tester), alors j'ai créé un projet avec une classe contenant le code suivant :
public class RegistryServeur {
public static void main(String[] args) {
try {
java.rmi.registry.LocateRegistry.createRegistry(1099);
} catch (RemoteException e) {
e.printStackTrace();
}
}
}
lorsque j'execute cette classe, le registry est créé, car si j'essaie de faire un "java.rmi.registry.LocateRegistry.createRegistry(1099);" dans une autre classe on me dit que le port 1099 est occupé. Mais dès que j'execute le serveur en faisant un bind ou rebind de cette façon :
MonRMIimp MonRemoteObj=new MonRMIimp();
java.rmi.Naming.rebind("rmi://localhost/MonRMIinterface", MonRemoteObj);
on me donne l'erreur suivante:
java.rmi.ConnectException: Connection refused to host: localhost; nested exception is:
java.net.ConnectException: Connection refused: connect
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source)
at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)
at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)
at sun.rmi.server.UnicastRef.newCall(Unknown Source)
at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
at java.rmi.Naming.rebind(Unknown Source)
après cela j'ai remplacé la ligne:
java.rmi.registry.LocateRegistry.createRegistry(1099);
par :
Runtime.getRuntime().exec("rmiregistry 1099");
et cette fois ci, l'erreur est :
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: java.lang.ClassNotFoundException: ICI MON INTERFACE ...
Avez vous une idée sur la solution ? si oui, ce serait vraiment sympa de me la communiquer.
Merci d'avance
1 réponse
Si ça peut t'aider, voici comment je crée mes Registry :
Le loup, solitaire et mystérieux.
public static void start(String ip)
{
System.out.println("Server is Starting... ");
try
{
System.out.println ("Creating Security Manager ...");
System.setSecurityManager(new RMISecurityManager());
System.out.println ("Creating Name Service ...");
Registry registry = LocateRegistry.createRegistry(2000);
Naming.rebind("//"+ip+":2000/AppStore", new AppStore());
System.out.println("Name Service: "+ip+":2000/AppStore");
System.out.println("Service is now registered.");
System.out.println("Building AppFactory ...");
buildAppFactory();
System.out.println("Server started.");
}
catch (Exception e)
{
System.out.println("Error creating Name Service: " + e.getMessage());
e.printStackTrace();
}
}
Le loup, solitaire et mystérieux.