JAX-WS: Почему класс-заглушка для SOAP службы внутренне изменяет URL-адрес службы? - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь разработать SOAP клиент на основе JAX-WS 2.3.0 и, хотя я могу создать экземпляр самого класса заглушки, он всегда сталкивается с ошибкой 404 при вызове одного из методов службы. Причина, по которой это происходит, заключается в том, что когда я создаю клиента, JAX-WS внутренне удаляет часть URL службы. Это означает, что я создаю экземпляр клиента следующим образом:

URL url = new URL("http://host/GETSREMOVED/testService/services/testServiceEndpoint");
TestServicePortType client = new TestService(url).getTestServicePortTypePort(); 

, где TestServicePortType и TestService - это классы, которые автоматически генерируются с помощью инструмента JAX-WS wsimport из файла wsdl. Если я смотрю на объект клиента во время отладки, я вижу что-то вроде этого:

JAX-WS RI 2.3.0 svn-revision#3528ea595bd29309f69172d231bbce272d21035c: Stub for http://host/testService/services/testServiceEndpoint

Как вы можете видеть, часть GETSREMOVED/ удалена из URL, поэтому клиент делает свои звонки на другой адрес и, очевидно, сталкивается с ошибкой 404.

У меня нет контроля над службой, потому что она не разработана моей компанией. Услуга сделана в стиле DOCUMENT и привязке LITERAL soap, что, насколько я знаю, является путем к go с JAX-WS.

Может кто-нибудь объяснить мне, почему это происходит? Что-то не так с моим использованием wsimport или способом, которым я создаю экземпляр объекта client? К сожалению, я не могу опубликовать конкретный URL службы или wsdl здесь, но, возможно, у кого-то еще есть идея, что может быть причиной этой проблемы.

...