OVH Cloud OVH Cloud

RMI et JBuilderX

12 réponses
Avatar
Albert Kunzunsky
Bonjour,

Je me lance dans une application distribuée, et pour comprendre les
mécanismes du RMI, j'ai copié l'exemple d'un bouquin. Un truc tout
simple avec un objet renvoyant une chaine de caractères.

Voici les quelques problèmes auquelles je suis confrontés.

- Si je lance le registre RMI par JBuilder, l'application serveur
plante avec une exception d'authorisation.

- Si je lance le registre RMI et l'application serveur sous une fenêtre
DOS, l'application serveur plante avec une exception d'authorisation.

- Si je lance le registre RMI sous une fenêtre DOS, l'application
serveur et l'application cliente dans JBuilder, l'application serveur et
l'application cliente fonctionnent correctement, a condition que
l'ensemble des classes soient dans le même dossier.

- Mais si l'ensemble des classes serveur sont dans un dossier et
l'application cliente dans une autre, l'application serveur fonctionne,
mais lorsque je lance l'application cliente elle lance l'exception:

java.rmi.UnmarshallException: error unmarshalling return; nested
exception is:
java.lang.ClassNotFoundException: rmiserver.ProductImpl_Stub
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknow Source)
etc...


Pouvez-vous s'il vous plait m'expliquer pourquoi j'ai ces différentes
erreurs, qu'es-ce que je n'ai pas fait correctement, et qu'es ce qu'il
faut que je fasse pour que ça fonctionne.

Merci beaucoup.

2 réponses

1 2
Avatar
Sébastien
2. Mon url pour le lookup est rmi:/rmi/ob1 (je me suis trompé dans la ligne
de code que je t'ai donné précédemment; c'était un de mes essai)

- si je mets rmi://..... il me dit unknow host
- si je mets rmi:/..... il me lève NotBoundException (toujours ces
problèmes d'un seul /), mais à la deuxième ligne il me dit que c'est sur le
ProductImpl_Skeleton

- j'ai essayé avec rmi:/rmi:1099/obj1 mais ça fait la même chose.


ton serveur ne s'appelle pas rmi quand même ?
la bonne url est : rmi://<NOM OU ADRESSE DU SERVEUR>:<port>/nom.
Essaie ça.


3. Jbuilder à bien crée les classes Stub et Skeleton.


sauf erreur, le Skeleton ne sert plus. Demande bien à générer pour java 2 seulement


4. Quand je lance la classe serveur, elle se lance correctement (Affichage
du message:"Attente des invocation des clients")
Donc les rebind fonctionnent, et les références aux objets 1 et 2 sont
bien dans la registry.


a priori c'est ton lookup côté client qui déconne


5. L'interface Product (de l'objet ProductImpl) coté serveur est dans le
package rmiserver, alors que coté client elle est dans le package rmiclient.
Es-ce que ça a une influance????


OUI!!! L'interface doit être unique. D'où sors tu l'idée que l'interface Product doit être en double ?


6. Pour terminer, j'ai essayé avec: permission java.security.AllPermission;
ça n'a rien changé.


si, ça doit faire disparaître les AccessException

Sébastien

Avatar
Albert Kunzunsky
Un grand grand merci, enfin ça marche.

Promis pour noël je me teind en blonde, parce que vraiment c'était sous mon
nez....
1 2