2010-11-02 2 views
3

Я использую весенние веб-сервисы для предоставления услуг в качестве веб-сервисов. я определил мой элемент ошибки Soap как этогоВесна, возвращающая пользовательские мыльные ошибки

<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> 

, и я использую это в моем WSDL

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

, а затем использовать это в операции

<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> 

Но когда я хочу бросить эту ошибку в моей конечной точке, как я могу это сделать?

ответ

2

Вам необходимо EndpointExceptionResolver, см. Руководство SpringWS о handling exceptions.

SpringWS поставляется с некоторыми встроенными исключениями, вы можете использовать их как ссылку при реализации своих собственных.

+3

Это, похоже, не относится к пользовательским ошибкам, а также к типичным ошибкам сервера. – skaffman

+0

Почему? Или что вы подразумеваете под «пользовательской ошибкой»? Просто взгляните на источник SimpleSoapExceptionResolver и его суперклассы: https://fisheye.springsource.org/browse/spring-ws/trunk/core/src/main/java/org/springframework/ws/soap/server/endpoint /SimpleSoapExceptionResolver.java?hb=true - вы можете видеть, что в этом нет ничего волшебного, вы просто реализуете интерфейс EndpointExceptionResolver и создаете собственную собственную ошибку. SpringWS даже поставляется с несколькими абстрактными классами, которые помогают удалить довольно много шаблонов. –

Смежные вопросы