Exercice autonome RMI 2

Conception de logiciels Intranet : patrons et canevas

Moderators: douinj, graffiop

Post Reply
guill_f58
Posts: 68
Joined: 10 Oct 2020 19:42

Exercice autonome RMI 2

Post by guill_f58 » 12 May 2022 20:20

Bonsoir, j'ai quelques questions/interrogations au sujet de l'exercice autonome RMI (http://lmi92.cnam.fr/NSY102/ed/ed_06_rmi/) au niveau de la question 2.1 ou j'ai voulu écrire ma solution à cette question. J'aurais aimé aussi avoir un avis.
Mon code est lisible ICI https://www.online-java.com/nTOFeIQBCK.

Quand un routeur utilise "sendmessage", je fais appel à un stub de type ReceiverRemote pour pouvoir utiliser "receive".
Alors qu'avant on récupérait un objet de type ReceiverI depuis Map<ReceiverI, FilterI> // Map<ReceiverI, Boolean>, on pouvait utiliser la clef pour que ce soit la bonne instance qui reçoive le message.
Mais maintenant en passant par un stub, on peut parler d'une représentation unique de ReceiverRemote quand j'utilise ceci "stub.receive(msg)" au lieu de "key.receive(msg)". Je n'utilise plus le receiver de stocker et il ne me sert plus qu'à vérifier s'il existe ou non.

Autre chose, pour construire mon MainEmetteur, j'ai besoin d'avoir "ReceiverI" et "Receiver" alors que du côté de mon Receiver, j'ai ReceiverRemote.
C'est pour construire mes requêtes mais c'est un peu étrange, non ?

De plus, pour comparer l'objet, equals ne peut pas marcher sur l'objet directement car la JVM n'est pas la même. Du coup, je suis obligé ici par exemple de vérifier le nom du receiver. Il y a peut être mieux ?

guill_f58
Posts: 68
Joined: 10 Oct 2020 19:42

Re: Exercice autonome RMI 2

Post by guill_f58 » 13 May 2022 9:37

J'ai un peu mieux compris en regardant la question suivante.
"DynamicRouterRemote" est une Adaptateur.

Et on enregistre chaque receiver auprès du registre :

Code: Select all

         
         new ReceiverRemote<MessageI<String>>(registry, "r1"); // enregistrement du service
         new ReceiverRemote<MessageI<String>>(registry, "r2"); // enregistrement du service
         new ReceiverRemote<MessageI<String>>(registry, "r3"); // enregistrement du service
         new ReceiverRemote<MessageI<String>>(registry, "r4"); // enregistrement du service
Et par la suite, on récupère la bonne instance / service :

Code: Select all

    
         r1 = (ReceiverRemoteI)registry.lookup("r1");  // recherche aupr�s de l'annuaire
         r2 = (ReceiverRemoteI)registry.lookup("r2");
         r3 = (ReceiverRemoteI)registry.lookup("r3");
         r4 = (ReceiverRemoteI)registry.lookup("r4");

Post Reply