Spring WS выдает уведомление вместо запроса-ответа - PullRequest
0 голосов
/ 15 февраля 2020

Я пытался создать порт существующей веб-службы JAX-WS в Spring, используя Spring WebService (следуя их указаниям в https://spring.io/guides/gs/producing-web-service/).

I конечная точка работает, используя как XSD, который используется существующим приложением (с JAX-WS), так и генерируя новый набор с помощью SoapUI.

По какой-то причине веб-служба, похоже, публикует с Тип «Уведомление», а не «Запрос-ответ», как исходные, существующие методы на существующей конечной точке JAX-WS. Spring WS также имеет «Выход» с указанным классом с суффиксом Response, а в JAX-WS - нет. Это визуально отличается в SoapUI с wsdl Spring, имеющим красную «стрелку влево» рядом с каждым методом вместо стрелок противотока.

Я думаю, что это проявляется как проблема, которую я вижу, когда я вызываю одна конечная точка, которую я настроил - регистрируется ошибка, в которой говорится: «Не найдено сопоставление конечной точки для [SaajSoapMessage .... myEndpointMethod Response » (например, объект ответа от метода конечной точки, а не сам метод конечной точки) .

Как уже упоминалось, я чувствую, что «Тип» в методах - это дымящийся пистолет, но я не могу понять, что его вызывает. Я искал проблему, но не могу найти ничего общего?

Обновление Следующее помогло с запросом-ответом ( Недопустимый wsdl, сгенерированный spring-ws, когда элемент запроса не заканчивается на 'Request' ), но Теперь я получаю ответ обратно в SOAPUI «Нет адаптера для конечной точки» со ссылкой на мой класс Response. Payload Root и ResponsePayload точно соответствуют объектам wsdl.

1 Ответ

0 голосов
/ 15 февраля 2020

ОК, поскольку единственной «помощью» здесь было закрытое голосование (спасибо, очень полезно), я сам справился с этим сейчас и опубликую решение. Было две части:

  1. В соответствии с «обновлением» в вопросе методы Request в XSD были названы в честь метода и не имели суффикса «Request». Это означало, что мне нужно было создать собственный класс WSDL11Definition, который бы позволял setRequestSuffix быть нулевым (пустым). Ссылка на вопрос содержит более подробную информацию.

  2. Объекты метода необходимо заключить в JAXBElement<>, чтобы успешно распознать ввод и вывод.

Как только все вышеперечисленное было сделано, моя точка останова была достигнута в моей IDE с использованием SOAPUI.

...