Я создаю SOAP веб-сервис в Spring Boot, используя Spring WS. Служба, которую я воссоздаю, является клоном Службы, работающей по более старой технологии, которая использует JavaX JWS, с классами, сгенерированными из XSD.
Проблемы, с которыми я столкнулся, действительно связаны: 1. Я могу ' Кажется, что он «получает» исключения, выданные в «новой» веб-службе обратно потребителю.
2. При запросе конечной точки в SOAPUI класс исключений для веб-службы выглядит так, как если бы это был односторонний метод.
Я считаю, что это потому, что Spring WS неправильно реализует / понимает классы исключений.
Когда в новом сервисе возникает исключение, потребитель получает com.sun.xml.internal.ws.fault.ServerSOAPFaultException
, а не Исключение, выданное в веб-службе.
Исходный сервис JavaX возвращает (используя TestException
в качестве примера):
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope">
<faultcode>S:Server</faultcode>
<faultstring>Test</faultstring>
<detail>
<ns2:TestException xmlns:ns2="http://test.co.uk/">
<code>abc123</code>
<message>Test</message>
</ns2:TestException>
</detail>
</S:Fault>
</S:Body>
</S:Envelope>
Я не могу найти какую-либо документацию или руководство о том, как Исключение должно быть построено / сконфигурировано для создания того же вложенного элемента <ns2>
. Есть ли способ точно передать исключение обратно, чтобы оно выглядело так же, как в сервисе?