[RESOLU]prob rmi

prob rmi [RESOLU] - Java - Programmation

Marsh Posté le 06-05-2007 à 16:47:59    

Salu,  
 
j'ai une application client/serveur, sur le serveur il y a une BD embarquée (H2 en l'occurrence) et j'utilise du rmi pour le dialogue client/serveur.
 
sequentiellement sur le serveur ça donne :
 
- demarrage de H2
- lancement du serveur RMI
## utilisation de l'app
- fermeture de H2
- fin du rmi
 
seulement si je fais ca, le client me retourne une Exception -> no such object in table
 
alors que si je ferme la base avant le lancement du client, il n'ya pas de soucis.
 
j'ai pensé que ca pouvait venir de l'utilisation du même port entre une routine propre a H2 et mon serveur rmi, mais le changement de port du serveur rmi ne change rien.
 
pouvez vous m'éclairer ?? merci


Message édité par bigears le 11-05-2007 à 11:29:52
Reply

Marsh Posté le 06-05-2007 à 16:47:59   

Reply

Marsh Posté le 06-05-2007 à 20:26:36    

le problème est à la ligne 42 dans le dossier antilope

Reply

Marsh Posté le 09-05-2007 à 13:46:39    

Taz a écrit :

le problème est à la ligne 42 dans le dossier antilope


 
bon alors en fait, j'ai un serveur rmi :
 

Code :
  1. try
  2.         {
  3.     Interface_RMI stub = (Interface_RMI) UnicastRemoteObject.exportObject(this, 0);
  4.            
  5.             Registry registry = LocateRegistry.createRegistry(1099);
  6.             registry.bind("RESULTAT", stub);
  7. }


 
j'insère l'objet implementant l'interface remote dans le table du registry au port 1099 (celui par défaut de rmi) en lui donnant le nom RESULTAT
 
avant cela j'ai ouvert une connection avec un serveur de BD(H2)  ( je le précise car quand le serveur est stoppé, pas de soucis ):

Code :
  1. Server.createTcpServer(args_serveur).start();


 
Une fois cette application compilée, je la lance.
 
 
j'ai le client rmi :

Code :
  1. Registry registry = LocateRegistry.getRegistry(1099);
  2.    
  3.             System.out.println("Services RMI disponibles :" );
  4.             this.stub = (Interface_RMI) registry.lookup("RESULTAT" );


 
 
et donc je compile& lance le client
 
et parfois j'obtient une exception provenant du client, qui dit "no such object in table" provenant de la ligne : "this.stub = (Interface_RMI) registry.lookup("RESULTAT" );"
 
et je relance le serveur et la il ya 1 chance sur 2 que ca fonctionne.
 
 
vous avez une idée de quoi cela peut venir?


Message édité par bigears le 09-05-2007 à 13:49:01
Reply

Marsh Posté le 10-05-2007 à 14:35:08    

personne?

Reply

Marsh Posté le 11-05-2007 à 11:29:11    

bon pour ceux que ca intéresse et/ou qui peuvent être confrontés au même problème.
 
il suffit de faire un appel a Thread.sleep(xxx) avant l'insertion de l'objet remote dans la table avec registry.bind car l'UnicastRemoteObject n'a pas toujours le temps d'être créé avant son insertion.
voila

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed