RMI a la folie

cs_bordeaux Messages postés 35 Date d'inscription lundi 6 décembre 2004 Statut Membre Dernière intervention 14 juin 2008 - 26 déc. 2006 à 17:29
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 - 27 déc. 2006 à 10:13
Bonjour,

ca fait trois jours que j'essaye de faire fonctionner un Hello World en utlisant le RMI!!!!

Le contexte : je travail sous Linux et Windows et j'utilise la jdk1.5.0.10 avec Eclipse 3.1.2

J'ai commencé par un premier exemple :
http://www.enseignement.polytechnique.fr/profs/informatique/Eric.Goubault/Cours05html/poly009.html
Cet exemple fonctionne très bien lorsque j'écris toutes les étapes à la manot, comme rmiregistry et rmic et quand j'essaye de le lancer avec Eclipse (qui doit gérer tout ca automatiquement) ca marche pas. sous windows ca marche ni sous Eclipse ni à la manot.
=> J'en ai conclu que ca provenait de ma version de jdk et de celle de l'exemple, en effet il y a beaucoup de modification entre la jdk1.4 et jdk1.5 pour les RMI.

Ensuite je suis tombé sur le meilleur exemple qui soit, celui de sun...
http://java.sun.com/j2se/1.5.0/docs/guide/rmi/hello/hello-world.html#4
Il est spécialement pour écrit pour la version jdk1.5, alors je copie les classes et lance les commandes et ca ne marche pas non plus ni sous linux ni sous windows et encore moins avec Eclipse.

Je suis vraiment à la rue. Je voudrais juste avoir un exemple d'utilisation de RMI qui fonctionne sous Eclipse, est-ce quelqu'un pourrait m'aider??

1 réponse

indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
27 déc. 2006 à 10:13
Salut
il ne me semble pas qu'Eclipse gére nativement les commandes RMI. En revanche, pourquoi taper à la main les commandes RMI alors que nous pouvons les utiliser directement dans son programme :)

En effet, nous pouvons avoir :
Côté serveur:
//Nous lancons le serveur de registre RMI avec le port par défaut (1099)
            System.out.println("Démarrage du serveur de registre");
            LocateRegistry.createRegistry(1099);
           
            //Initialisation du dictionnaire   
            System.out.println("Préparation de l'export des objets");
            Factory fact = new Factory();
            Dictionnary dico = new Dictionnary();
           
            //Préparation du registre
            System.out.println("Insertion dans le registre");
            Naming.rebind("ifact", fact);
            Naming.rebind("idico", dico);

Côté client:
//Préparation du registre
            System.out.println("Récupération du registre distant sur <"+monAdresseIp+">");
            Registry reg = LocateRegistry.getRegistry(monAdresseIp);
           
            //Récupération des éléments du registre
            System.out.println("Récupération des éléments du registre");
            IFactory ifact = (IFactory)reg.lookup("ifact");
            IDictionnary idico = (IDictionnary)reg.lookup("idico");

Voilà :)

le monde a des idées : la preuve, c'est qu'il y en a de mauvaises
ne comprends pas tout, mais je parle de tout : c'est ce qui compte
0
Rejoignez-nous