Exécution code cours Proxy

Conception de logiciels Intranet : patrons et canevas

Modérateurs : Douin, graffion

Vivel
Messages : 44
Inscription : 19 févr. 2018 13:27

Exécution code cours Proxy

Message par Vivel » 09 mars 2018 17:59

Bonjour,
j'ai essayé de faire tourner votre code sous mac mais j'ai plein d'erreurs…
Auriez vous une idée ?
Vous noterez qu'il y a des différences entre mac et windows notamment pas besoin de "start" et j'ai remplacé java par javac car il ne trouvait pas la commande.
Je me pose une question on doit bien faire :
$ javac -cp . ServiceImplRmi.java
puis OU l'un ou l'autre ?
$ javac -cp . –Djava.security.policy=policy.all ServiceImplRmi.java

Merci de vos suggestions,
virginie


///////////////////////////////////////////////////
Exécution du code sous terminal MAC
///////////////////////////////////////////////////

//Dans une première fenêtre lancer le registre
$ rmiregistry

// dans une seconde fenêtre
//côté serveur
$ javac -cp . ServiceImplRmi.java
ma réponse
Note: ServiceImplRmi.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

//liée au RmiSecurityManager
$ javac -cp . –Djava.security.policy=policy.all ServiceImplRmi.java
ma réponse
javac: invalid flag: –Djava.security.policy=policy.all
Usage: javac <options> <source files>
use -help for a list of possible options

// dans une troisième fenêtre
//le client
$ javac -cp . ClientRMI.java

Note: ClientRMI.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
//le service
$ java -cp . –Djava.security.policy=policy.all ClientRMI

Erreur : impossible de trouver ou charger la classe principale –Djava.security.policy=policy.all

Douin
Messages : 266
Inscription : 18 mars 2009 15:46

Re: Exécution code cours Proxy

Message par Douin » 13 mars 2018 11:04

Bonjour,

Je n'ai pas de Mac sous la main
en général dans les chemins c'est ":" au lieu de ";" sous windows
c'est & au lieu de start

dites moi où vous en êtes avec la vidéo d'hier soir qui sera en ligne vers 13h

à suivre...

Vivel
Messages : 44
Inscription : 19 févr. 2018 13:27

Re: Exécution code cours Proxy

Message par Vivel » 13 mars 2018 19:43

Bon j'ai trouvé… il faut ouvrir trois fenêtre différente et mettre le & à la fin pas au début comme le start …
voici le résumé :

///////////////////////////////////////////////////
Exécution du code sous terminal MAC
///////////////////////////////////////////////////
// pour cet exemple :
Tout le code dans le même dossier, dans trois fenêtres différentes du terminal

1er fenêtre : le registry
//lancer le registre the registry runs on port 1099
$ rmiregistry &
// $ rmiregistry 2001 & pour le démarrer sur le port 2001


2eme fenêtre : le service
//on compile si ce n'est déjà fait
$ javac *.java
//on lance le service avec la policy -> RmiSecurityManager
$ java -cp . -Djava.security.policy=securite.policy ServiceImplRmi &
// affichage de "service_de_fleurs en attente sur nomVotreMachine.local"
/* ou Si pas de policy
$ java -cp . ServiceImplRmi &
*/

3eme fenetre : le client
$ java -cp . -Djava.security.policy=securite.policy ClientRMI &
/* ou Si pas de policy : le client
$ java -cp . ClientRMI &
*/
// affichage de "Done" dans cette fenêtre.
//dans la fenêtre du service : affichage du résultat:
recevez ce bouquet : [lys, iris, oranger, iris]


// pour info :
-cp <class search path of directories and zip/jar files>
-D<name>=<value> définition d'une propriété système


et sinon pour tout doute, la doc officielle :
https://docs.oracle.com/javase/7/docs/t ... #runClient

julien_24
Messages : 47
Inscription : 17 oct. 2017 13:41

Re: Exécution code cours Proxy

Message par julien_24 » 19 mars 2018 10:53

bonjour,

Le code donnée dans le pdf du cours fonctionne, mais je ne le comprends vraiment pas.

Je résume:

Ce que l'on cherche à faire c'est appeler depuis le client une méthode sur un objet distant et voir le résultat du cote le client (enfin je crois)

Avec cette méthode offrir qui retourne un boolean mais qui réalise un affichage (System.out dans le corps de la méthode), apres avoir lancé le rmi registry(qui est sur le port 1099) puis le ServiceImpl (sur le port 0, autre chose que je comprends pas, si je remplace le 0 par 1099 cela ne marche plus)
et enfin le ClientRMI tout fonctionne sauf que l'affichage de la méthode offrir se fait dans la fenetre du Service (il me semble que ce n'est pas ce que l'on souhaite faire mais plutôt que l'on ai un affichage cote client)

J'ai alors voulu remplacer le type de retour de la methode offrir en 1 String et le retourner depuis ServiceImpl, et là plus aucun affichage, ni cote Service(ca, ca va) mais aucun affichage cote client.

Bouquet est bien Serialisable.

Si quelqu'un peut m'aider à comprendre.

Merci

julien

Douin
Messages : 266
Inscription : 18 mars 2009 15:46

Re: Exécution code cours Proxy

Message par Douin » 19 mars 2018 10:57

Bonjour,

A chaque changement vous devez "relancer" toute la manip

Envoyez nous le code côté serveur et le client RMI

à suivre...

Vivel
Messages : 44
Inscription : 19 févr. 2018 13:27

Re: Exécution code cours Proxy

Message par Vivel » 19 mars 2018 11:35

port O :
exportObject crée un socket pour lequel port 0 indicates an anonymous port
doc : https://docs.oracle.com/javase/8/docs/a ... emote-int-
et https://docs.oracle.com/javase/8/docs/a ... ctory.html

Effectivement l'affichage du service ce fait dans la fenêtre service puisque le sys.out est dans service. je pense que c'était le but de la démo. Si tu voulais que ça retourne un résultat il faudrait que ta méthode offrir retourne un string ;)
fait un sys.out, dans ta classe client, sur résultat et tu verras bien true;

Regarde les autre exemples fait en cours par la suite, ça t'aidera aussi je pense.
j'espère que ça réponds à ta question,
Bon courage,
virginie

Vivel
Messages : 44
Inscription : 19 févr. 2018 13:27

Re: Exécution code cours Proxy

Message par Vivel » 19 mars 2018 11:38

Comment on fait pour arrêter tous les process de jps ? A chaque fois je m'embête à faire des kill de chaque numéros… merci

ps : quand on fait dans terminal la commande jps on a
57670 ServiceImplRmi
57993 Jps
57658 RegistryImpl
tous les process qui tournent… et donc ce serait bien de les arrêter, non ?

julien_24
Messages : 47
Inscription : 17 oct. 2017 13:41

Re: Exécution code cours Proxy

Message par julien_24 » 19 mars 2018 11:46

Bonjour,

Merci M Douin et Vivel pour vos réponses, je vais creuser un peu et je reviens, j'ai deja l'impression que pour mon affichage cote client, il doit y avoir un probleme de synchronisation ou peut etre java s'occupe de tout??

Pour les process tu dois avoir une commande killall qui doit pouvoir te permettre de tuer tous les process sur un programme

julien

julien_24
Messages : 47
Inscription : 17 oct. 2017 13:41

Re: Exécution code cours Proxy

Message par julien_24 » 19 mars 2018 12:11

Re,

Oui il fallait tout relancer, je pensais l'avoir fait, du coup cela fonctionne.
L'appel est synchrone, le client attend.

Merci

julien

Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité