Je crée un service web via axis.
Dans le cas ou l'une des valeurs que je récupère est à null, je voudrais afficher un message d'erreur.
Je ne sais pas comment faire et ne trouve pas de doc sur le sujet
Je crée un service web via axis.
Dans le cas ou l'une des valeurs que je récupère est à null, je voudrais afficher un message d'erreur.
Je ne sais pas comment faire et ne trouve pas de doc sur le sujet
bonjour antigone,
J'ai du mal a comprendre si ton probleme se trouve lorsque ton web service récupère un null et tu voudrais qu'il renvoi une erreur à ton client ou si c'est lorsque ton client recoit null de ton web service?
Aph'
en fait c lorsque mon service récupère un null, je voudrais afficher que le service renvoie un message.
J'ai vu qu'on doit utiliser fault, mais je ne trouves pas sur le web des détail ou un exemple complet
Il te faut générer une Axis Fault.
axisfault API
Articles: Richfaces - JBosstools pour JSF.
oui je veux le message qd le service recupere une valeur null,
je vais tester avec fault,
j'ai ajouté dans mon wsdl :
<wsdl:operation name="op" parameterOrder="id">
<wsdl:input message="impl:opRequest" name="opRequest"/>
<wsdl:output message="impl:opResponse" name="opResponse"/>
<wsdl:fault message="impl:opFault" name="opFault"/>
</wsdl:operation>
et
Je génère bien ma classe opFault,<wsdl:operation name="op">
<wsdlsoap:operation soapAction="http://toto.com"/>
<wsdl:input name="opRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://toto.com" use="encoded"/>
</wsdl:input>
<wsdl:output name="opResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://toto.com" use="encoded"/>
</wsdl:output>
<wsdl:fault name="opFault">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://toto.com" use="encoded"/>
</wsdl:fault>
</wsdl:operation>
dans mon web service je sais qu'il faut que je fasse un catch (opFault)
mais je ne sais pas quoi mettre dans l'implémentation de la classe générée opFault.java.
c'est pour ca que j'essai de trouver un exemple complet
Je vais essayer de voir avec la javadoc
Je vais esssayer de m'en sortir avec la javadoc.
fault c'est une exception qui peu etre lancé par ta méthode..je ne comprend toujours pas ce que tu veux faire..pq vouloir récuperer une valeur null.quand c'est le s ervice te renvoi un objet tu as une erreur ..?
le serveur te renvoi la valeur nulle, donc pas besoin de modifier le wsdl; c'est du coté client que tu souhaites afficher le message.;enfin si je comprend bien ..
Articles: Richfaces - JBosstools pour JSF.
en fait c dans mes spécifications, mon service au lieu de de retourner une valeur null, doit renvoyer un message explicite.
Ca n'est pas moi qui développe le client
ok donc là, soit tu utilise l'exception axisfault soit, c'est mieux de créer ta propore classe d'expetion avec les messages que tu veux..tu declare son type dans le wsdl ou le xsd et tu l'ajoute à l'operation..
dans le code de ta methode au lieu de retourner une valeur null, tu fais throw TonExeption..
Articles: Richfaces - JBosstools pour JSF.
Bonjour, je tente tjrs d'implémenter un service web
Je n'arrive pas a gérer mon exception.
dans le cas ou je récupère une valeur (id) à nulle, je voudrais afficher le message d'erreur 'id can not be found'.
J'essai d'utiliser AxisFault,
dans mon wsdl :
et<wsdl:operation name="op" parameterOrder="id">
<wsdl:input message="impl:opRequest" name="opRequest"/>
<wsdl:output message="impl:opResponse" name="opResponse"/>
<wsdl:fault message="impl:opFault" name="opFault"/>
</wsdl:operation>
Et<wsdl:portType name="monService">
<wsdl:operation name="op" parameterOrder="p1">
<wsdl:input message="impl:opRequest" name="opRequest"/>
<wsdl:output message="impl:opResponse" name="opResponse"/>
<wsdl:fault message="impl:opFault" name="opFault"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="monServiceSoapBinding" type="impl:monService">
<wsdl:operation name="op">
<wsdlsoap:operation soapAction="http://toto.com"/>
<wsdl:input name="opRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://toto.com" use="encoded"/>
</wsdl:input>
<wsdl:output name="opResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://toto.com" use="encoded"/>
</wsdl:output>
<wsdl:fault name="opFault">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://toto.com" use="encoded"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
Je génère bien ma classe opFault,
dans mon web service je sais qu'il faut que je fasse un throw (opFault)public class opFaultextends org.apache.axis.AxisFault {
public java.lang.String message;
public java.lang.String getMessage() {
return this.message;
}
public opFault() {
}
public opFault(java.lang.String message) {
this.message = message;
}
}
dans mon implémentation j'ajoute donc
//cas ou j'ai une valeur a nulle)
else else throw new com.toto.opFault("id can not be found");
dans le cas ou j'ai mon id à nulle, je voudrais afficher le message d'erreur id can not be found.
hélas , l'erreur qui s'affiche lorsque je provoque mon exception est
AxisFault
faultCode: {http://xml.apache.org/axis/}Server.generalException
faultString:
faultActor: null
faultDetail:
exceptionName: com.toto.opFault
stackTrace: AxisFault
faultCode: {http://xml.apache.org/axis/}Server.generalException
faultString:
faultActor: null
faultDetail:
exceptionName: com.toto.opFault
at com.toto.monWebService.op(monWebService.java:166)
at com.toto.monServiceSoapBindingImpl.op(MonServiceSoapBindingImpl.java:23)
at com.toto.MonServiceSoapBindingSkeleton.op(MonServiceSoapBindingSkeleton.java:67)
at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
..........
...........
Qu'est ce qui ne va pas?
mon wsdl?
dois je ajouter qq chose à ma classe opFault?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager