Pb techniques avec java RMI

mickSan Messages postés 2 Date d'inscription jeudi 28 décembre 2000 Statut Membre Dernière intervention 29 octobre 2009 - 26 oct. 2009 à 16:53
mickSan Messages postés 2 Date d'inscription jeudi 28 décembre 2000 Statut Membre Dernière intervention 29 octobre 2009 - 29 oct. 2009 à 15:30
Bonjour, je suis en train de découvrir Java RMI avec un classique HelloWorld.
J'essaie de mettre en place le téléchargement automatique des classes via un serveur Web, mais impossible de récupérer le Stub sur le client.


Mon fichier interface => Hello.java:
import java.rmi.*;
public interface Hello extends Remote {
  public String ditBonjour()
    throws java.rmi.RemoteException;
}



Le serveur => ImpServerHello:
import java.rmi.server.*;
import java.net.*;
import java.rmi.*;

public class ImpServeurHello extends UnicastRemoteObject implements Hello{
  public ImpServeurHello() throws RemoteException{super();}
  public String ditBonjour() throws RemoteException{return "bonjour a tous";}
  public static void main(String arg[]){

   if (System.getSecurityManager() == null)
            System.setSecurityManager ( new RMISecurityManager() );

    try {
      ImpServeurHello s = new ImpServeurHello();
      String nom = "monObjet";
      Naming.rebind(nom,s); // enregistrement
      System.out.println("Serveur enregistré");
    }
    catch (Exception e) {System.err.println("Erreur :" + e); }
  }
}


Le fichier client => ClientHello.java :
import java.rmi.*;
public class ClientHello {
  public static void main(String arg[]) {
  
if (System.getSecurityManager() == null)
            System.setSecurityManager ( new RMISecurityManager() );

    try {
Hello h = (Hello) Naming.lookup("rmi://MonServeur/monObjet");
String messageRecu = h.ditBonjour();
System.out.println(messageRecu);
    }
    catch (Exception e) {System.err.println("Erreur :" + e); }
  }
}


Mon fichier policy :
grant {
      permission java.security.AllPermission;
};


Je compile et exécute le serveur de la façon suivante :
javac ImpServeurHello.java
rmic ImpServeurHello
rmiregistry &
export CLASSPATH=$PWD
java -Djava.rmi.server.codebase=MonServeur/ -Djava.security.policy=./rg.policy  ImpServeurHello



et le client sur une autre machine :
javac ClientHello.java
export CLASSPATH=$PWD
java -Djava.rmi.server.codebase=MonServeur/ -Djava.security.policy=./rg.policy ClientHello



Le serveur se lance bien mais j'ai une erreur ClassNotFound sur le client !!!

Si quelqu'un à une petite idée ???

2 réponses

kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
27 oct. 2009 à 09:22
Salut,

du coté du client, est ce que l'interface Hello est présente dans le classpath ?
Au passage, le message complet de l'erreur serait le bienvenu
0
mickSan Messages postés 2 Date d'inscription jeudi 28 décembre 2000 Statut Membre Dernière intervention 29 octobre 2009
29 oct. 2009 à 15:30
oui l'interface Hello est bien dans le classpath du client.

En ce qui concerne l'erreur, la voici

Erreur :java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
        java.lang.ClassNotFoundException: ImpServeurHello_Stub
0
Rejoignez-nous