[TP05] Petstore services couldn't be registered[RESOLU]

Modérateurs : graffion, jmdouin, agoncal, mlebihan

dbe
Messages : 13
Inscription : 05 oct. 2015 13:13

Re: [TP05] Petstore services couldn't be registered

Message par dbe » 15 nov. 2016 22:48

plm a écrit :Bonjour,
J'ai été confronté au même problème que vous, voici un lien qui m'a permis d'en venir à bout :
viewtopic.php?f=27&t=9058&view=next
J'ai essayé les deux méthodes dans le topic que tu cite, sans succès.
Peux-tu me dire si Hello fonctionnait avant que cette solution ne résoude ton problème ? Merci d'avance.
Hello fonctionnait déjà oui.

Très exactement j'ai procédé ainsi :
1 - Lancement du serveur wamp pour démarrer la base de données
2 - Ouverture d'une invite de commande, je me place dans le répertoire tp05\yaps contenant le build.xml
3 - Nettoyage de la base : ant yaps-create-db et ant yaps-insert-data
4 - Création du fichier x.policy dans le répertoire yaps
5 - Compiler : ant yaps-build
6 - Toujours dans la même fenêtre, modification du CLASSPATH : set CLASSPATH = .\bin;.\classes\production;.\classes\test
7 - Toujours dans la même fenêtre, lancement de eclipse (ce qui assure qu'eclipse travaille avec le bon CLASSPATH). Pour pouvoir lancer eclipse en ligne de commande, il suffit d'avoir mis le chemin vers eclipse.exe dans le path.
8 - Toujours dans la même fenêtre, faire start rmiregistry
9 - Dans eclipse, aller sur le fichier RegisterServices (sous le package com.yaps.petstore.server), faire clique-droit, run as, run configurations, sélectionner Java Application/Register Services dans la partie gauche de la fenêtre puis aller sur l'onglet arguments. Dans la partie VM arguments, écrire -Djava.security.policy=chemin complet jusqu'à x.policy (ex : C:\Users\DBe\Documents\CNAM\GLG203\TP05\Yaps\x.policy). Faire run pour lancer le serveur. Normalement "Petstore services are registered" doit être affiché.
10 -Toujours dans eclipse, cliquer sur le fichier AllTests.java et faire run as, junit test. Si les classes ont été correctement codés, les 99 tests passent.
11 - Toujours dans la même fenêtre, faire ant yaps-test (avec eclipse toujours ouvert bien entendu)
12 - Faire ant yaps-mark si l'étape précédente est ok.

Bon courage.
Dernière édition par dbe le 16 nov. 2016 11:12, édité 2 fois.

plm
Messages : 9
Inscription : 14 nov. 2016 1:18

Re: [TP05] Petstore services couldn't be registered

Message par plm » 16 nov. 2016 1:25

Merci graffion, à priori tout est en ordre par rapport à ce que tu me dit.

Merci dbe pour ta réponse très détaillée, j'ai suivi ta procédure mais malheureusement cela ne fonctionne toujours pas chez moi.

En cherchant à modifier le classpath d'eclipse directement dans l'outil, j'ai ajouté les différents jars de mon répertoire build dans mon buildpath, et j'obtiens désormais une erreur un peu plus précise en lancant "RegisterServices" avec run as, run configurations, etc :

Code : Tout sélectionner

java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
	java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
	java.lang.ClassNotFoundException: com.yaps.petstore.server.service.catalog.CatalogService_Stub
	at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:419)
	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:267)
	at sun.rmi.transport.Transport$2.run(Transport.java:202)
	at sun.rmi.transport.Transport$2.run(Transport.java:199)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.rmi.transport.Transport.serviceCall(Transport.java:198)
	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:567)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.access$400(TCPTransport.java:619)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$1.run(TCPTransport.java:684)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$1.run(TCPTransport.java:681)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:681)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)
	at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:275)
	at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:252)
	at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:378)
	at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
	at java.rmi.Naming.rebind(Naming.java:177)
	at com.yaps.petstore.server.RegisterServices.main(RegisterServices.java:30)
Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
	java.lang.ClassNotFoundException: com.yaps.petstore.server.service.catalog.CatalogService_Stub
	at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
	at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:409)
	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:267)
	at sun.rmi.transport.Transport$2.run(Transport.java:202)
	at sun.rmi.transport.Transport$2.run(Transport.java:199)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.rmi.transport.Transport.serviceCall(Transport.java:198)
	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:567)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.access$400(TCPTransport.java:619)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$1.run(TCPTransport.java:684)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$1.run(TCPTransport.java:681)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:681)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: com.yaps.petstore.server.service.catalog.CatalogService_Stub
	at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
	at sun.rmi.server.LoaderHandler$Loader.loadClass(LoaderHandler.java:1206)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:274)
	at sun.rmi.server.LoaderHandler.loadClassForName(LoaderHandler.java:1219)
	at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:452)
	at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:185)
	at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:637)
	at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:264)
	at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:214)
	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1612)
	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
	... 17 more
nov. 16, 2016 12:12:34 AM com.yaps.petstore.server.RegisterServices main
GRAVE: Petstore services couldn't be registered
CatalogService_Stub est pourtant bien présent dans le server.jar ainsi que dans le repertoire ...TP05\Yaps\classes\production\com\yaps\petstore\server\service\catalog !

fazil
Messages : 31
Inscription : 09 oct. 2016 21:28

Re: [TP05] Petstore services couldn't be registered

Message par fazil » 16 nov. 2016 18:39

Bonjour,
Alors voilà, moi aussi j'ai le problème au lancement du server:
"Petstore services couldn't be registered"

J'ai donc essayé de rajouter dans la caseVM Options d'Eclipse/IntelliJ l'option au lancement du RegisterServices:
-D java.security.policy=/home/fazil/sauvegardeD2016/CNAM/GLG203/TPs/SourcesFournis_TP05/Yaps/bin/java.policy

Du coup mon erreur change et devient:
Error: Could not find or load main class java.security.policy=.home.fazil.sauvegardeD2016.CNAM.GLG203.TPs.SourcesFournis_TP05.Yaps.bin.java.policy

J'ai l'impression que je progresse mais je suis toujours bloqué!

Des gens ont-ils eu ce même problème ces derniers jours et ont réussi à le résoudre?

graffion
Messages : 613
Inscription : 21 juin 2005 14:05

Re: [TP05] Petstore services couldn't be registered

Message par graffion » 16 nov. 2016 18:47

N'essayez pas de lancer le serveur RMI depuis Eclipse (ou un autre IDE)!

Faites le en ligne de commande (requiert que build/common.jar build/server.jar soient construits)

Code : Tout sélectionner

$ cd TP5/Yaps
$ ant yaps-build
$ cd bin
$ sh startServer.sh

fazil
Messages : 31
Inscription : 09 oct. 2016 21:28

Re: [TP05] Petstore services couldn't be registered

Message par fazil » 16 nov. 2016 19:13

N'essayez pas de lancer le serveur RMI depuis Eclipse (ou un autre IDE)!

Faites le en ligne de commande (requiert que build/common.jar build/server.jar soient construits)

Code: Tout sélectionner
$ cd TP5/Yaps
$ ant yaps-build
$ cd bin
$ sh startServer.sh
J'ai commencé par ça! Mais manifestemment, j'ai une exception levée dans le serveur Petstore.
Je pense donc que l'erreur est un problème de permission (java.policy)

voilà mon CLASSPATH quand j'execute le script startServer.sh:
../build/server.jar:../build/common.jar:/home/fazil/Downloads/mysql-connector-java-5.1.21/lib/mysql-connector-java-5.1.21-bin.jar
Je n'ai pas l'impression de prendre en compte le java.policy ???

plm
Messages : 9
Inscription : 14 nov. 2016 1:18

Re: [TP05] Petstore services couldn't be registered

Message par plm » 16 nov. 2016 23:00

My problem has been resolved with LUYI solution :

http://deptmedia.cnam.fr/phpBB2/viewtop ... fc6f28df41

For the windows users ,please create a file called "startRMI.bat".
then , put the following codes in the file.

Code : Tout sélectionner

@echo on

set DEPLOY_DIR=..\build

set CLASSPATH=%DEPLOY_DIR%\server.jar;%DEPLOY_DIR%\common.jar;%DEPLOY_DIR%\clientCatalog.jar;%DEPLOY_DIR%\clientCustomer.jar;%DEPLOY_DIR%\clientOrder.jar;%MYSQL_HOME%\lib\mysql-connector-java-5.1.21-bin.jar;

rmiregistry

Agnès
Messages : 4
Inscription : 20 nov. 2016 16:48

Re: [TP05] Petstore services couldn't be registered

Message par Agnès » 21 nov. 2016 2:23

graffion a écrit :Les scripts de lancement des clients et du serveur utilisant des chemins relatifs pour initialiser leur CLASSPATH, il est essentiel de les exécuter à partir du répertoire qui les contiennent.

Sur Linux

Code : Tout sélectionner

$ cd TP5/Yaps
$ ant yaps-build 
$ ls build/*.jar
build/clientCatalog.jar  build/clientCustomer.jar  build/clientOrder.jar  build/common.jar  build/server.jar
$ cd bin
$ sh startServer.sh

Je viens de suivre exactement les indications ci-dessus et je n'arrive pourtant pas à rebind le service

Code : Tout sélectionner

MacBook-Pro-de-Busa:Yaps Agnes$ cd bin
MacBook-Pro-de-Busa:bin Agnes$ sh startServer.sh
nov. 21, 2016 1:18:10 AM com.yaps.petstore.server.RegisterServices main
GRAVE: Petstore services couldn't be registered
quelqu'un peu m'éclairer ?
d'avance merci

graffion
Messages : 613
Inscription : 21 juin 2005 14:05

Re: [TP05] Petstore services couldn't be registered

Message par graffion » 21 nov. 2016 11:14

Bonjour,

Il se peut que la variable CLASSPATH ne soit pas exportée dans votre fichier jdkenv.sh :

Code : Tout sélectionner

    CLASSPATH=.:$JUNIT_HOME/junit-4.4.jar
    # export  CLASSPATH
Le script startServer.sh ne va alors pas fonctionner car la variable CLASSPATH ne sera pas exportée sous Linux.

Solution : modifier le script startServer.sh pour y exporter CLASSPATH (en insérant le mot export):

Code : Tout sélectionner

export CLASSPATH=$DEPLOY_DIR/server.jar:$DEPLOY_DIR/common.jar:$MYSQL_HOME/lib/mysql-connector-java-5.1.21-bin.jar

Agnès
Messages : 4
Inscription : 20 nov. 2016 16:48

Re: [TP05] Petstore services couldn't be registered

Message par Agnès » 22 nov. 2016 0:47

graffion a écrit :Bonjour,

Il se peut que la variable CLASSPATH ne soit pas exportée dans votre fichier jdkenv.sh :

Code : Tout sélectionner

    CLASSPATH=.:$JUNIT_HOME/junit-4.4.jar
    # export  CLASSPATH
Le script startServer.sh ne va alors pas fonctionner car la variable CLASSPATH ne sera pas exportée sous Linux.

Solution : modifier le script startServer.sh pour y exporter CLASSPATH (en insérant le mot export):

Code : Tout sélectionner

export CLASSPATH=$DEPLOY_DIR/server.jar:$DEPLOY_DIR/common.jar:$MYSQL_HOME/lib/mysql-connector-java-5.1.21-bin.jar
Merci, la cause de mon problème venait du CLASSPATH, en suivant vos conseils, la connexion a pu s'établir

Code : Tout sélectionner

nov. 21, 2016 11:08:39 PM com.yaps.petstore.server.RegisterServices main
INFOS: Petstore services are registered.
Tanks

Répondre

Qui est en ligne ?

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