WebService Axis - Réponse avec / sans StackTrace. [Résolu]

Signaler
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
-
Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
-
Bonjour,

Je suis confronter à un petit soucis de réponse de mon WS.

J'utilise sur tout les WebServices en place la même structure pour les erreurs

<wsdl:message name="ErrorParmMiss">
  <wsdl:part element="serr:ErrorParmMiss" name="fault"/>
</wsdl:message>

<xsd:element name="ErrorParmMiss" type="serr:ErrorParmMiss"/>

<xsd:complexType name="ErrorParmMiss">
  <xsd:sequence>
    <xsd:element name="parameterName" nillable="true" type="xsd:string" />
    <xsd:element name="description" nillable="true" type="xsd:string"/>
  </xsd:sequence>
</xsd:complexType>


J'utilise cette erreur lorsqu'un de mes paramètres d'appel manque.
Jusqu'ici tout va bien.

Dans le WebServiceA -> Aucun soucis
Je catch bien l'erreur;
Je la mapp correctement
Et dans ma réponse de WS j'ai exactement ce que je veut

<detail>
   <ns1:ErrorParmMiss xmlns:ns1="http://****">
   <ns1:parameterName>ParamId1</ns1:parameterName>
   <ns1:description>Search Criteria ParamId1 is null</ns1:description>
   </ns1:ErrorParmMiss>
   <ns2:exceptionName xmlns:ns2="http://xml.apache.org/axis/">***.ErrorParmMiss</ns2:exceptionName>
   <ns3:hostname xmlns:ns3="http://xml.apache.org/axis/">***</ns3:hostname>
</detail>


Dans le Web ServiceB cela se complique.
Je catch bien mon erreur
je la mapp avec la même fonction que pour le WebserviceA
Et la réponse n'est pas bonne

<detail>
   <ns1:ErrorParmMiss xmlns:ns1="http://****">
   <ns1:parameterName>ParamId1</ns1:parameterName>
   <ns1:description>Search Criteria ParamId1 is null</ns1:description>
   </ns1:ErrorParmMiss>
   <ns2:exceptionName xmlns:ns2="http://xml.apache.org/axis/">***.ErrorParmMiss</ns2:exceptionName>
<stackTrace xmlns:ns3="http://xml.apache.org/axis/">at ***.AddressImpl.MappReturnedError(Unknown Source)
.....
  </ns3:stackTrace>
  <ns4:hostname xmlns:ns4="http://xml.apache.org/axis/">***</ns4:hostname>
</detail>


Les WSDL sont identiques au niveaux des déclarations des erreurs.
Les classes générés sous eclipse sont identiques, et généré avec les mêmes outils, même versions ...
Bref, après avoir chercher un bon moment je ne vois pas pourquoi j'ai la Trace d'un coter et pas de l'autre.
Quelqu'un à déjà eu un soucis similaire ? et comment cela à était réglé ? si cela l'as était...



Sans maitrise, la puissance n'est rien
Il ne faut pas vendre la peau de l'ours, non il ne faut pas.

1 réponse

Messages postés
240
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
19 juillet 2012
2
Bon réponse trouvée;

Dans un cas mon Exception été "throw" puis traitée; donc la stack trace ne remonter pas;

Dans l'autre elle était seulement "throw"
Pour palier à cela dans la classe extends Axis.Fault il suffit d'ajouté dans le constructeur :

this.removeFaultDetail(org.apache.axis.Constants.QNAME_FAULTDETAIL_STACKTRACE);

Pas très propres je trouve mais bon..

Sans maitrise, la puissance n'est rien
Il ne faut pas vendre la peau de l'ours, non il ne faut pas.