RMI: Erreur "RemoteException occurred in ser

Fermé
hanagi Messages postés 135 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 13 décembre 2012 - 23 janv. 2012 à 12:13
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 - 23 janv. 2012 à 15:14
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 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
Modifié par arth le 23/01/2012 à 15:14
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