RMI: Erreur "RemoteException occurred in ser

hanagi Messages postés 141 Statut Membre -  
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 :

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

arth Messages postés 10414 Statut Contributeur 1 293
 
Si ça peut t'aider, voici comment je crée mes Registry :

 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.
0