2010-11-02 18 views
3

J'utilise les services Web de printemps pour exposer mes services en tant que services Web. je définissais mon élément de faute de savon comme cePrintemps retour des erreurs de savon personnalisé

<xsd:element name="systemFault"> 
     <xsd:complexType> 
       <xsd:sequence> 
        <xsd:element name="faultCode" type="xsd:string" nillable="true"/> 
        <xsd:element name="faultMessage" type="xsd:string"/> 
       </xsd:sequence> 
     </xsd:complexType> 
    </xsd:element> 

et je me sers dans mon WSDL

<wsdl:message name="msgSystemFault"> 
     <wsdl:part name="body" element="cred:SystemFault"/> 
    </wsdl:message> 

puis l'utiliser dans une opération

<wsdl:operation name="opMyOp"> 
      <wsdl:documentation> 
       Creating an entity note. 
      </wsdl:documentation> 
      <wsdl:input message="tns:msgMyOpRequest"/> 
      <wsdl:output message="tns:msgMyOpResponse"/> 
      <wsdl:fault name="fault" message="tns:msgSystemFault"/> 
     </wsdl:operation> 

Mais quand je veux jeter cette faute dans mon point final, comment puis-je faire cela ??

Répondre

2

Vous avez besoin d'un EndpointExceptionResolver, voir le manuel SpringWS à propos de handling exceptions. Spring12 est livré avec certaines résolutions d'exceptions intégrées, vous pouvez les utiliser comme référence lors de la mise en œuvre de votre propre.

+3

Cela ne semble pas gérer les erreurs personnalisées, mais seulement les erreurs de serveur génériques. – skaffman

+0

Pourquoi? Ou que voulez-vous dire par "faute personnalisée"? Jetez un oeil à la source de SimpleSoapExceptionResolver et de ses superclasses: https://fisheye.springsource.org/browse/spring-ws/trunk/core/src/main/java/org/springframework/ws/soap/server/endpoint /SimpleSoapExceptionResolver.java?hb=true - vous pouvez voir qu'il n'y a rien de magique à ce sujet, il vous suffit d'implémenter l'interface EndpointExceptionResolver et de créer votre propre erreur personnalisée. SpringWS vient même avec plusieurs classes abstraites qui aident à enlever beaucoup de code standard. –