Проблема с настройкой схемы ответа WS.
-
23-09-2019 - |
Вопрос
Я использую 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" />
Не связан с StackOverflow