Как создать собственное сообщение о сбое мыла с помощью весеннего веб-сервиса

Я пытаюсь написать веб-сервис, используя библиотеку Spring Web Service. Я могу успешно настроить свои конечные точки, и она работает нормально, но я сталкиваюсь с некоторыми проблемами с сопоставлениями исключений.

Я могу отобразить исключения, используя @SoapFault и SoapFaultAnnotationExceptionResolver, но определение wsdl выглядит следующим образом

<xsd:schema elementFormDefault="qualified" targetNamespace="http://abc.com/soap/">
    <xsd:complexType name="ServiceException">
        <xsd:sequence>
            <xsd:element name="message" nillable="true" type="xsd:string"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="ValidationException">
        <xsd:complexContent>
            <xsd:extension base="tns:ServiceException">
                <xsd:sequence/>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:complexType name="InternalExceptio,n">
        <xsd:complexContent>
            <xsd:extension base="tns:ServiceException">
                <xsd:sequence/>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:complexType name="AuthenticationException">
        <xsd:complexContent>
            <xsd:extension base="tns:ServiceException">
                <xsd:sequence/>
            </xsd:extension>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:complexType name="LoginInput">
        <xsd:sequence>
            <xsd:element minOccurs="1" maxOccurs="1" name="UserName" nillable="false" type="xsd:string"/>
            <xsd:element minOccurs="1" maxOccurs="1" name="PassWord" nillable="false" type="xsd:string"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="LoginOutput">
        <xsd:sequence>
            <xsd:element minOccurs="1" maxOccurs="1" name="ValidTo" nillable="false" type="xsd:dateTime"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:element name="login" type="tns:LoginInput"/>
    <xsd:element name="loginResponse" type="tns:LoginOutput"/>

    <xsd:element name="ValidationException" type="tns:ValidationException"/>
    <xsd:element name="InternalException" type="tns:InternalException"/>
    <xsd:element name="AuthenticationException" type="tns:AuthenticationException"/>
</xsd:schema>

<message name="LoginRequest">
    <part name="login" element="tns:login"/>
</message>

<message name="LoginResponse">
    <part name="loginResponse" element="tns:loginResponse"/>
</message>

<message name="ValidationException">
    <part name="ValidationException" element="tns:ValidationException"/>
</message>

<message name="InternalException">
    <part name="InternalException" element="tns:InternalException"/>
</message>

<message name="AuthenticationException">
    <part name="AuthenticationException" element="tns:AuthenticationException"/>
</message>

<portType name="ServicePortType">
    <operation name="Login">
        <input message="tns:LoginRequest"/>
        <output message="tns:LoginResponse"/>
        <fault name="ValidationException" message="tns:ValidationException"/>
        <fault name="InternalException" message="tns:InternalException"/>
        <fault name="AuthenticationException" message="tns:AuthenticationException"/>
    </operation>
</portType>

<binding name="ServiceBinding" type="tns:ServicePortType">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="Login">
        <soap:operation soapAction="urn://Service#Login"/>
        <input>
            <soap:body use="literal"/>
        </input>
        <output>
            <soap:body use="literal"/>
        </output>
        <fault name="ValidationException">
            <soap:fault name="ValidationException" use="literal"/>
        </fault>
        <fault name="InternalException">
            <soap:fault name="InternalException" use="literal"/>
        </fault>
        <fault name="AuthenticationException">
            <soap:fault name="AuthenticationException" use="literal"/>
        </fault>
    </operation>
</binding>

Как я могу написать обработку исключений для этого определения сервиса?

Спасибо

Ответы на вопрос(2)

Ваш ответ на вопрос