TP05_Cor - GRAVE : Petstore service couldn't be r [RESOLU]

Modérateurs : graffion, jmdouin, agoncal, mlebihan

Répondre
cadart_g
Messages : 27
Inscription : 20 oct. 2015 18:06

TP05_Cor - GRAVE : Petstore service couldn't be r [RESOLU]

Message par cadart_g » 23 nov. 2015 12:46

Bonjour,

Avant d'explorer les problème qui peuvent se présenter dans le TP06, je cherche à m'assurer que mon environnement peut enfin fonctionner avec le corrigé du TP05.

J'ai donc mis les sources TP05_COR
Adapté mon fichier bat pour installer les variables d'environnement comme suit :

env.bat :

Code : Tout sélectionner

set JAVA_HOME=C:\APP\Java\jdk1.8.0_60
set  JRE_HOME=C:\APP\Java\jdk1.8.0_60\jre
set TOMCAT_HOME=C:\APP\Tomcat_v7.0
set ANT_HOME=C:\app\API_JAVA\apache-ant-1.7.0
set JUNIT_HOME=C:\app\API_JAVA\junit-4.4
set MYSQL_HOME=C:\wamp\bin\mysql\mysql5.6.17\bin
set HTTPUNIT_HOME=C:\APP\API_JAVA\httpunit-1.6.2
REM  set DOM4J_HOME=C:\Applications\java\dom4j-1.6.1

set PATH="%JRE_HOME%\bin";"%JAVA_HOME%\bin";"%TOMCAT_HOME%\bin";"%ANT_HOME%\bin";%PATH%

set CLASSPATH=.;%JUNIT_HOME%\junit-4.4.jar

Démarrage TOMCAT dans cet environnement :

Code : Tout sélectionner

e:
E:\DEV_SVN\DEV_VKS_CNAM_ACGE_01\TP06\TP05_cor\env.bat
c:
cd C:\APP\Tomcat_v7.0\bin
C:\APP\Tomcat_v7.0\bin\startup.bat

e:
La fenêtre Dos ouverte pour TOMCAT indique : INFOS:Server startup in 689 ms. Tout va bien, je la laisse ouverte; dans Firefox, la page d'accueil TOMCAT s'affiche (http://localhost:8080/)

je retourne dans la première fenêtre dos, pour faire :

Code : Tout sélectionner

cd bin
startserver3
Une nouvelle fenêtre DOS s'ouver (rmiregistry.exe), mais reste noire
Le message GRAVE: Petstore services couldn't be registered apparaît dans la fenêtre DOS.

A noter que sur startserver3, j'ai dû contourner le problème posé par la ligne findstr /C:"/" todel.del >todel2.del qui provoquait un arrêt sur :errPath, alors que mes chemins comportaient bien des "\".

Voici son contenu :

Code : Tout sélectionner

echo off

set DEPLOY_DIR=..\build
set LIB_DIR=..\..\lib

rem copy RMI required jars to a web server (http://localhost:8080/petstore/rmi)
echo %TOMCAT_HOME%
echo %TOMCAT_HOME% >todel.del

REM findstr /C:"/"  todel.del >todel2.del
REM IF ERRORLEVEL 1 goto errPath
REM 
REM :errPath
REM echo remplacer les / par des \ dans TOMCAT_HOME
REM goto end

:pathOK
set JAVA=%JAVA_HOME%\bin\java
set RMIREGISTRY=%JAVA_HOME%\bin\rmiregistry
set CLASSPATH=
start %RMIREGISTRY%

mkdir %TOMCAT_HOME%\webapps\petstore\rmi
copy %DEPLOY_DIR%\server.jar %TOMCAT_HOME%\webapps\petstore\rmi
copy %DEPLOY_DIR%\common.jar %TOMCAT_HOME%\webapps\petstore\rmi

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

%JAVA% -Djava.rmi.server.logCalls=true -Djava.rmi.server.codebase="http://localhost:8080/petstore/rmi/server.jar http://localhost:8080/petstore/rmi/common.jar" -cp %CLASSPATH% com.yaps.petstore.server.RegisterServices

pause

:end 
Dispo pour intervention par skype, si nécessaire.

En vous remerciant pour votre aide.

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

Re: TP06 (TP05_Cor) - GRAVE : Petstore service couldn't be r

Message par graffion » 23 nov. 2015 15:01

Bonjour,

Depuis le TP3 la plupart des évènements de l'application sont logués en utilisant des méthodes statiques de la classe com.yaps.petstore.common.logging.Trace.
C'est le cas pour l'exception éventuellement levée dans l'application RegisterServices :

Code : Tout sélectionner

        try {
            Naming.rebind(CATALOG_SERVICE, new CatalogService());
            Naming.rebind(CUSTOMER_SERVICE, new CustomerService());
            Naming.rebind(ORDER_SERVICE, new OrderService());
            Trace.info(_cname, mname, "Petstore services are registered.");
        } catch (Exception e) {
            Trace.severe(_cname, mname, "Petstore services couldn't be registered");
            Trace.throwing(_cname, mname, e);
        }
Vous pouvez donc connaitre l'exception qui a pu être levée sur un appel à Naming.rebind().

Dans le cas du TP05, on exécute RegisterServices par la commande ci dessous (extraite de startServer.bat) :

Code : Tout sélectionner

%JAVA% -cp %CLASSPATH% -Djava.util.logging.config.file=mylogging.properties com.yaps.petstore.server.RegisterServices
Le fichier mylogging.properties passé en paramètre précise que les logs seront stockés dans un fichier dont le nom matche applicationLog%u.xml

Effectivement ce fichier est créé dans le répertoire de lancement de RegisterServices.

Ce fichier devrait contenir (au format xml) un descriptif de l'exception levée.
Quel est le contenu de ce fichier applicationLog0.xml (50 dernières lignes)?

cadart_g
Messages : 27
Inscription : 20 oct. 2015 18:06

Re: TP06 (TP05_Cor) - GRAVE : Petstore service couldn't be r

Message par cadart_g » 23 nov. 2015 16:37

on trouve effectivement, une exception,

Code : Tout sélectionner

 <message>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</message>
    <frame>
Fichier complet disponible à l'adresse suivante : http://atoutservice.info/tmp_TP_GLG203/ ... onLog0.xml

De fait, la classe com.yaps.petstore.server.service.catalog.CatalogService_Stub ne figure pas dans le corrigé; Mais comme elle ne figure pas non plus dans les sources TP06, et citée nulle part dans les TP, je ne pense pas que ceci soit la cause;

Côté Classpath, je ne vois pas non plus d'anomalie

Code : Tout sélectionner

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
	<classpathentry kind="src" path="Yaps/src/java"/>
	<classpathentry kind="src" path="Yaps/bin"/>
	<classpathentry kind="src" path="Yaps/test/src"/>
	<classpathentry kind="src" path="Hello/src/java"/>
	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
	<classpathentry kind="lib" path="C:/APP/API_JAVA/junit-4.10.jar"/>
	<classpathentry kind="lib" path="C:/wamp/bin/mysql/mysql5.6.17/bin/lib/mysql-connector-java-5.1.21-bin.jar"/>
	<classpathentry kind="output" path="bin"/>
</classpath>

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

Re: TP06 (TP05_Cor) - GRAVE : Petstore service couldn't be r

Message par graffion » 23 nov. 2015 17:01

La cause de votre pb est donc
java.lang.ClassNotFoundException: com.yaps.petstore.server.service.catalog.CatalogService_Stub
J'ai tout reconstruit avec un JDK1.8 comme vous

Code : Tout sélectionner

d:\tmp\GLG203_2015\TP05.ess\Yaps> echo %JAVA_HOME%
D:\Applications\java\jdk1.8.0_20

d:\tmp\GLG203_2015\TP05.ess\Yaps> ant yaps-clean
...
d:\tmp\GLG203_2015\TP05.ess\Yaps> ant yaps-build
Les fichiers Stub sont bien générés et sont présents dans build/server.jar :

Code : Tout sélectionner

d:\tmp\GLG203_2015\TP05.ess\Yaps> find classes/production -name "*_Stub*"
classes/production/com/yaps/petstore/server/service/catalog/CatalogService_Stub.class
classes/production/com/yaps/petstore/server/service/customer/CustomerService_Stub.class
classes/production/com/yaps/petstore/server/service/order/OrderService_Stub.class

d:\tmp\GLG203_2015\TP05.ess\Yaps> unzip -l build/server.jar  | fgrep _Stub.class
    11253  11-23-2015 15:46   com/yaps/petstore/server/service/catalog/CatalogService_Stub.class
     5992  11-23-2015 15:46   com/yaps/petstore/server/service/customer/CustomerService_Stub.class
     4921  11-23-2015 15:46   com/yaps/petstore/server/service/order/OrderService_Stub.class


cadart_g
Messages : 27
Inscription : 20 oct. 2015 18:06

Re: TP06 (TP05_Cor) - GRAVE : Petstore service couldn't be r

Message par cadart_g » 23 nov. 2015 18:11

Je n'avais pas compris que les classes *_Stub.class étaient générées lors du build.

Mais, vérification faite, sur les fichiers générés, ils sont bien là.

J'ai donc tout repris :

Arrêt TOMCAT
env.bat
ant yaps-clean
ant yaps-build
Démarrage TOMCAT

e:
cd E:\DEV_SVN\DEV_VKS_CNAM_ACGE_01\TP05\Yaps

cd bin

startServer3

Même erreur.

Deuxième tentative, en relançant le serveur TOMCAT, avant de passer manuellement les deux dernières lignes du fichier startServer3.bat

Code : Tout sélectionner

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

%JAVA% -Djava.rmi.server.logCalls=true -Djava.rmi.server.codebase="http://localhost:8080/petstore/rmi/server.jar http://localhost:8080/petstore/rmi/common.jar" -cp %CLASSPATH% com.yaps.petstore.server.RegisterServices

Vérification de la variable CLASSPATH

Code : Tout sélectionner

Vérification  du CLASSPATH
..\build\server.jar;..\build\common.jar;C:\wamp\bin\mysql\mysql5.6.17\bin\lib\mysql-connector-java-5.1.21-bin.jar


E:\DEV_SVN\DEV_VKS_CNAM_ACGE_01\TP05_cor\Yaps\bin>echo %CLASSPATH%
..\build\server.jar;..\build\common.jar;C:\wamp\bin\mysql\mysql5.6.17\bin\lib\mysql-connector-java-5.1.21-bin.jar

E:\DEV_SVN\DEV_VKS_CNAM_ACGE_01\TP05_cor\Yaps\bin>dir ..\build\server.jar
 Le volume dans le lecteur E s'appelle DATA_E
 Le numéro de série du volume est CEDD-7ADF

 Répertoire de E:\DEV_SVN\DEV_VKS_CNAM_ACGE_01\TP05_cor\Yaps\build

23/11/2015  16:48            49 853 server.jar
               1 fichier(s)           49 853 octets
               0 Rép(s)  444 828 004 352 octets libres

E:\DEV_SVN\DEV_VKS_CNAM_ACGE_01\TP05_cor\Yaps\bin>dir ..\build\common.jar
 Le volume dans le lecteur E s'appelle DATA_E
 Le numéro de série du volume est CEDD-7ADF

 Répertoire de E:\DEV_SVN\DEV_VKS_CNAM_ACGE_01\TP05_cor\Yaps\build

23/11/2015  16:48            14 359 common.jar
               1 fichier(s)           14 359 octets
               0 Rép(s)  444 828 004 352 octets libres

E:\DEV_SVN\DEV_VKS_CNAM_ACGE_01\TP05_cor\Yaps\bin>dir C:\wamp\bin\mysql\mysql5.6.17\bin\lib\mysql-connector-java-5.1.21-bin.jar
 Le volume dans le lecteur C s'appelle OS
 Le numéro de série du volume est 7C66-8685

 Répertoire de C:\wamp\bin\mysql\mysql5.6.17\bin\lib

30/07/2012  10:00           827 942 mysql-connector-java-5.1.21-bin.jar
               1 fichier(s)          827 942 octets
               0 Rép(s)  166 805 204 992 octets libres

E:\DEV_SVN\DEV_VKS_CNAM_ACGE_01\TP05_cor\Yaps\bin>




J'ai effectué plusieurs fois votre procédure (ant yaps-clean / ant yaps-build), mais je constate que mon fichier applicationLog0.xml ne se raffraîchit plus et affiche toujours la même date 23/11/2015 15:01

Si j'ai bien compris, sans débloquer cette situation, il me semble qu'il ne soit pas possible d'exécuter les tests pour le TP06 (?)

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

Re: TP06 (TP05_Cor) - GRAVE : Petstore service couldn't be r

Message par graffion » 23 nov. 2015 19:15

Faites d'abord marcher la correction du TP05 (après avoir rebooter votre machine).

cadart_g
Messages : 27
Inscription : 20 oct. 2015 18:06

Re: TP06 (TP05_Cor) - GRAVE : Petstore service couldn't be r

Message par cadart_g » 24 nov. 2015 0:45

Redémarrage, sans aucun effet.

est-il normal de ne pas avoir le répertoire LIB (j'ai vu sur les forums que je n'étais pas le seul dans ce cas) ?

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

Re: TP06 (TP05_Cor) - GRAVE : Petstore service couldn't be r

Message par dbe » 24 nov. 2015 1:24

Bonsoir,

Je suis également toujours dans la même situation, malgré l'utilisation de startServer3, je n'arrive pas à lancer le serveur.
Le fichier applicationLog0 indique ceci :

Code : Tout sélectionner

<exception>
    <message>java.rmi.ConnectException: Connection refused to host: 192.168.174.1; nested exception is: 
	java.net.ConnectException: Connection refused: connect</message>
    <frame>
      <class>sun.rmi.transport.tcp.TCPEndpoint</class>
      <method>newSocket</method>
      <line>619</line>
    </frame>
    <frame>
      <class>sun.rmi.transport.tcp.TCPChannel</class>
      <method>createConnection</method>
      <line>216</line>
    </frame>
    <frame>
      <class>sun.rmi.transport.tcp.TCPChannel</class>
      <method>newConnection</method>
      <line>202</line>
    </frame>
    <frame>
      <class>sun.rmi.server.UnicastRef</class>
      <method>newCall</method>
      <line>341</line>
    </frame>
    <frame>
      <class>sun.rmi.registry.RegistryImpl_Stub</class>
      <method>rebind</method>
    </frame>
    <frame>
      <class>java.rmi.Naming</class>
      <method>rebind</method>
      <line>177</line>
    </frame>
    <frame>
      <class>com.yaps.petstore.server.RegisterServices</class>
      <method>main</method>
    </frame>
  </exception>
</record>

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

Re: TP06 (TP05_Cor) - GRAVE : Petstore service couldn't be r

Message par graffion » 24 nov. 2015 11:54

Bonjour,

(cadart_g)
est-il normal de ne pas avoir le répertoire LIB
Oui! Pas de répertoire lib utilisé pour les TP1 à 6 (ça va venir).

(dbe)
Je suis également toujours dans la même situation, malgré l'utilisation de startServer
java.net.ConnectException: Connection refused: connect
La trace indique un problème de connexion. Arrêtez votre firewall avant de relancer startServer.

Je vous propose de poster la trace loguée par RegisterServices du TP05 (fichier applicationLog0.xml).

Pour cela (après avoir rebooter votre machine) exécutez les commandes ci-dessous :

Code : Tout sélectionner

mkdir TP05.cor
cd TP05.cor
unzip ../SourcesFournis_TP05.zip 
unzip ../SourceCompletDeLApplication_TP05.zip 
cd Yaps
ant yaps-clean
ant  yaps-create-db yaps-insert-data
ant yaps-build
cd bin
del applicationLog0.xml
startServer

type applicationLog0.xml


cadart_g
Messages : 27
Inscription : 20 oct. 2015 18:06

Re: TP06 (TP05_Cor) - GRAVE : Petstore service couldn't be r

Message par cadart_g » 24 nov. 2015 13:41

Bonjour,

Merci pour vos réponses,

Cette fois, nous allons pouvoir clôturer ce post.

Détail de la solution :
Le pb ne se posait pas au niveau du Firewall (j'utilise Kaspersky), mais de la présence d'un programme de connexion VPN, qui même lorsque la connexion VPN n'était pas actif générait une incompatibilité avec le démarrage de RMI.
En arrêtant ce programme, j'ai pu lancer correctement les tests sur TP05_cor.

Cela fonctionne également sur TP06. Je parviens à générer le fichier html. Mais que de retard pris !

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

Re: TP06 (TP05_Cor) - GRAVE : Petstore service couldn't be r

Message par dbe » 24 nov. 2015 15:29

cadart_g a écrit :Bonjour,

Merci pour vos réponses,

Cette fois, nous allons pouvoir clôturer ce post.

Détail de la solution :
Le pb ne se posait pas au niveau du Firewall (j'utilise Kaspersky), mais de la présence d'un programme de connexion VPN, qui même lorsque la connexion VPN n'était pas actif générait une incompatibilité avec le démarrage de RMI.
En arrêtant ce programme, j'ai pu lancer correctement les tests sur TP05_cor.

Cela fonctionne également sur TP06. Je parviens à générer le fichier html. Mais que de retard pris !
Content pour toi que tu ais résolu ton problème mais, pour ce qui me concerne, je suis toujours bloqué (désactiver le firewall n'a rien changé). Je n'ai aucune connexion VPN sur ma machine.
Peux-tu m'expliquer comment tu as abouti à la solution de ton côté, ça pourrait peut-être me mettre sur la voie ?

cadart_g
Messages : 27
Inscription : 20 oct. 2015 18:06

Re: TP05_Cor - GRAVE : Petstore service couldn't be r [RESOL

Message par cadart_g » 24 nov. 2015 17:33

En fait, ce qui m'a un peu surpris, c'est l'url affichée dans la fenêtre de connexion rmi qui m'a surpris :


voir : http://atoutservice.info/tmp_TP_GLG203/2015-11-17 00_22_27-TP05A.jpg

1/ En mode connecté via VPN, j'avais 192.168.1.68 (adresse de mon poste sur mon réseau local). Celle-là ne m'avait pas surpris.
2/ En mode déconnecté du VPN, j'avais : 192.168.217.1 (jamais utilisée).

Cette variation dans les adresses m'a fait penser au comportement du VPN qui interfère sur les paramètres du poste, notamment au niveau du DNS. Sans plus chercher, je l'ai donc arrêté, pour refaire le test, et là, coup de chance.

En analysant, de fait, aucune des deux adresse ip affichées ci-dessous ne correspondait à une adresse localhost, qui normalement est du type : 127.0.0.1

C'est ce qui m'a mis sur la voie.

Je te souhaite bon courage.

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

Re: TP05_Cor - GRAVE : Petstore service couldn't be r [RESOL

Message par dbe » 24 nov. 2015 23:49

Monsieur Graffion, comme dit plus haut, je suis toujours confronté au problème de "connection refused" lors du lancement du serveur. En faisant des recherches sur google, je suis tombé sur ce fil de discussion qui correspond beaucoup à ma problématique : http://stackoverflow.com/questions/1568 ... -127-0-1-1

Suivant les pistes fournies par la discussion ci-dessus, j'ai tenté d'ajouter la ligne : System.setProperty("java.rmi.server.hostname","192.168.0.17") juste avant les trois rebind dans le code source de RegisterServices.java (192.168.0.17 est l'adresse ip de mon poste). Après un ant yaps-clean puis un ant yaps-build, rien ne change.
Ils évoquent aussi la possibilité de mettre à jour le fichier hosts de mon poste mais je ne sais pas exactement ce qu'ils entendent par là...

Qu'en pensez-vous ?
Merci d'avance pour votre aide.

Répondre