SOAP проблем реализации сервиса, когда мы перемещаем приложение из веб-сферы в Tomcat - PullRequest
0 голосов
/ 27 марта 2020

Мы пытались перенести устаревшее серверное приложение с Websphere (8. ) на Tomcat (9. ). В качестве отправной точки мы выполнили конфигурацию basi c и смогли собрать приложение и развернуть его на tomcat без каких-либо проблем, предполагая, что это должно быть довольно просто.

Проблема началась, когда мы попытались получить доступ к SOAP API со стороны клиента, он вернулся с ошибкой 404.

<h1>HTTP Status 404 – Not Found</h1>
<b>Message</b> &#47;DigitalVoiceWeb&#47;DigitalVoiceService</p>
<b>Description</b> The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.</p>
<hr class="line" />
<h3>Apache Tomcat/9.0.33</h3>

Когда мы начали отладку, он достигает кота и начинает обрабатывать начальные фильтры (Custom Authentication and Cook ie Фильтры), определенные в сети. xml. После этой точки, когда он пытается определить запрошенный путь к ресурсу внутри организации. apache .catalina.servlets.DefaultServlet. Возвращается с нулем. По сути, метод getRelativePath () внутри этих вызовов не находит запись для этого запроса.

Я не являюсь экспертом в службах SOAP, но пробовал несколько вариантов, как показано ниже,

  • Гарантировано, что класс реализации, который предоставляет методы и расположение wsdl, аннотирован @WebService. Поскольку это весенний проект, я также добавил аннотацию для @Service на уровне класса
  • . Это расположение wsdl как часть аннотации @ Webserv ie wsdlLocation = "WEB-INF / wsdl / DigitalVoiceService .wsdl "
  • В качестве дополнительного фактора я добавил прослушиватель (WSServletContextListener) в сети. xml. Обратитесь к слушателю из моей сети. xml

Поскольку это ошибка 404, существует ли какая-либо другая веб-конфигурация, которая требуется для ссылки на относительный путь расположения WSDL или методы API на серверная сторона?

Запрос приходит как '/ DigitalVoiceService', но когда он пытается найти сопоставление, он не находит ничего и возвращает ноль. Так что я думаю, что-то не так с контекстом. Есть ли способ выяснить, все ли методы внутри класса @WebService выставлены?

Я понимаю, что это более конкретный c вопрос, но я здесь, чтобы увидеть, прошел ли кто-либо через эту подобную миграцию и испытал нечто подобное.

...