У меня есть SOAP-запрос такой формы:
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:myqname="http://example.com/hello"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header/>
<soapenv:Body>
<myqname:MyRequest xmlns:myqname="http://example.com/hello">
...
</myqname:MyRequest>
</soapenv:Body>
</soapenv:Envelope>
Если я попрошу SOAPUI «форматировать XML» в этом запросе, он удалит второе объявление myqname, поэтому я получаю следующее:
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:myqname="http://example.com/hello"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header/>
<soapenv:Body>
<myqname:MyRequest>
...
</myqname:MyRequest>
</soapenv:Body>
</soapenv:Envelope>
Исходный запрос работает нормально, но серверы приложений не работают с измененным запросом с этой ошибкой:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<soap:Fault>
<faultcode>soap:Client</faultcode>
<faultstring>Unmarshalling Error: UndeclaredPrefix: Cannot resolve 'myqname:MyRequest' as a QName: the prefix 'myqname' is not declared.</faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>
Согласно спецификации веб-сервисов, обязательно ли повторное объявление qname внутри узла soapenv:Body? Это ошибка SOAPUI или ошибка сервера приложений? или недоразумение с моей стороны?
SOAPUI 4.0.1, версия сервера WebLogic: 10.3.2.0
Изменить: ups, даже если я использовал сервер приложений WebLogic, я использовал структуру веб-сервисов CXF. Я разместил проблему там. Issues.apache.org/jira/browse/CXF-4026
Итак: SOAPUI 4.0.1, CXF 2.5.0