2016-07-14 3 views
0

Мы пытаемся использовать SOAP-сервис (в приложении Java), который имеет разные конечные точки в среде prod и pre-prod. Мы создали клиентский код с помощью wsimport и пытаемся переопределить конечную точку с помощью поставщика привязки.Проблема с заменой конечной точки SOAP во время выполнения

Поставщик привязки отлично работает в среде pre prod (сгенерированный код был из pre prod environment wsdl). Но когда мы пытаемся выполнить тестирование в производственной среде, поставщик привязки не сможет переопределить конечную точку. В производственной среде он выбрасывает «Ошибка соединения, когда он пытается подключиться к pre prod». Мы узнали, что поставщик привязки нуждается в доступе для pre prod wsdl и prod wsdl для переопределения конечной точки. Из-за ограничений группы безопасности мы не можем получить доступ к proprod wsdl из prod.

Мы также попытались прочитать конечную точку, вызвав сервис из prod wsdl во время выполнения, но информация о портах в wsdl жестко закодирована на какой-то IP-адрес и не может быть изменена, и исправление prod wsdl не поддается контролю.

Есть ли другой способ переопределить конечную точку во время выполнения?

ответ

0

Основная причина проблемы заключалась в том, что заглушки имели жестко закодированные конечные точки QA. Я изменил код заглушения клиента, удалил жестко закодированные конечные точки из прокси-сгенерированного кода, а поставщик привязки начал работать нормально. Все другие решения занимали много времени, и для использования служб шлюза требовались изменения уровня среды.

0

Вы можете использовать UDDI-решение и поддерживать управление версиями для своих конечных точек SOAP, или вы можете использовать услугу шлюза. Эта единая служба будет перенаправлять вызов внутренне на разные службы во время выполнения.

Я предпочитаю UDDI, потому что он обеспечивает большую гибкость. : https://docs.oracle.com/cd/E17904_01/admin.1111/e15867/uddi.htm#OSBAG392

+0

Я анализирую возможные решения с помощью UDDI и услуги шлюза. Есть ли еще какие-нибудь другие быстрые решения по кодированию? В настоящее время наше приложение не использует никаких шлюзов, и процесс UDDI также потребует нескольких утверждений, поэтому просто проверяйте, есть ли что-то быстрое. – user3452558

+0

вы можете ссылаться на исходный код Axis2 и проверить, как он изменяет конечную точку перед вызовом. обратитесь к этому примеру и проверьте код Axis2 src: https://axis.apache.org/axis2/java/core/docs/userguide-creatingclients-xmlbeans.html – amitmah

+0

Спасибо Amitmah за это предложение. У меня есть разрешение этой проблемы. На самом деле в автогенерированных файлах-заглушках был нечетный статический блок и статические параметры, что было основной проблемой. Мы буквально изменили автогенерированный код, перезаписали логику, прочитали кучу конструкторов и статические методы, которые мы не используем. Поэтому я нашел более быстрый способ, изменив файлы с автогенерированием и убедившись, что они не заменяются в развертываниях. Но все же спасибо за все ваши предложения, он открыл новые идеи, которые я буду продолжать изучать. – user3452558