Вопрос

Я использую SoapUI для тестирования некоторых веб-сервисов.

В MockService, доступном в мыле, я получаю ответ по умолчанию

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sch="http://www.someurl.com/schemas">
        <soapenv:Header/>
        <soapenv:Body>
             <sch:Response>
                 <sch:Something>?</sch:Something>
             </sch:Response>
        </soapenv:Body>
   </soapenv:Envelope>

Когда вызывается настоящий веб-сервис, я не получаю xmlns:sch="http://www.someurl.com/schemas", а элементы внутри ответа не имеют префикса "sch".Вот что я получаю:

       <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
            <soapenv:Header/>
            <soapenv:Body>
                 <Response>
                     <Something>something</Something>
                 </Response>
            </soapenv:Body>
       </soapenv:Envelope>

Я использую Java с Spring-WS.И использование Castor для преобразования XML в объект Java.

Как включить схему в ответ?

РЕДАКТИРОВАТЬ:Добавление деталей конфигурации.

myApplication-servlet.xml выглядит так

<bean id="payloadMapping"
        class="org.springframework.ws.server.endpoint.mapping.PayloadRootQNameEndpointMapping">
        <property name="endpointMap">
            <map>
                <entry
                    key="{http://www.someurl.com/schemas}MyRequest"
                    value-ref="myEndpoint"/>                
            </map>
        </property>
    </bean>

<bean id="myEndpoint"
        class="foo.bar.myEndpoint">
        <constructor-arg ref="messageSource" />
        <property name="marshaller" ref="marshaller" />
        <property name="unmarshaller" ref="marshaller" />
    </bean>

<bean id="myWsdlDefinition"
        class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition">
        <property name="schema">
            <bean class="org.springframework.xml.xsd.SimpleXsdSchema">
                <property name="xsd" value="/MyXsd.xsd" />
            </bean>
        </property>
        <property name="portTypeName" value="myPortTypeName" />
        <property name="locationUri" value="http://anotherUrl:8080/services" />
    </bean>

<bean id="marshaller" class="org.springframework.oxm.castor.CastorMarshaller">
        <property name="mappingLocation" value="classpath:mapping.xml" />
    </bean>

<bean id="messageSource"
        class="org.springframework.context.support.ResourceBundleMessageSource">
        <property name="basename" value="errors" />
    </bean>
Это было полезно?

Решение

В файле сопоставления мне нужно поместить префикс ns-в элемент сопоставления.

<map-to xml="Response" ns-prefix="sch" />
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top