Раньше я писал SOAP-клиенты в Python и использовал библиотеку SUDS. Не вдаваясь в подробности, поколение "заглушки" действительно довольно динамично, как это было во время выполнения, и, поскольку Python настолько бесплоден, я могу ссылаться на ожидаемые методы, созданные WSDL, без предварительно скомпилированного заглушки. Я в порядке с созданием заглушки с чем-то вроде wsimport, потому что здорово, что состав SOAP-сообщений обрабатывается через красивую структуру объектов Java. Итак, я не ищу механизм динамического генерации, подобный SUDS в python.
Моя проблема в том, что все простые примеры JAX-WS, которые я вижу, предназначены для того, что я назову "статически расположенным веб-сервисом". Я пытаюсь подключиться к веб-службе с известным WSDL, из которого я мог бы создавать заглушки во время компиляции, но местоположение которых известно только во время выполнения. Например, я хочу получить доступ к веб-службам Microsoft SharePoint. Где бы ни было развернуто мое приложение, будет запущен другой сервер (или серверы) SharePoint, который необходимо будет указывать во время выполнения. Все простые примеры, которые я видел, имеют URL-адрес местоположения службы, жестко закодированный в заглушки через wsimport. Есть ли способ генерировать заглушки, но предоставить местоположение службы во время выполнения?
Я очень удивлен, не найдя никаких примеров этого, потому что я полагаю, что то, что я пытаюсь сделать, должно быть очень распространенным, поскольку веб-службы идут. Возможно, ответ заключается в том, что я не могу лениться и получить красивую объектизированную версию методов WSDL, если местоположение сервера известно только во время выполнения. Я видел примеры SAAJ, но там, конечно, я сам должен сам создавать SOAP-сообщения. Это было бы таким позором, когда WSDL будет известен во время компиляции. Разве я не могу взять пирог и съесть его?
Если я правильно понял ваш вопрос, вы хотите подключиться к нескольким веб-службам, которые выставляют один и тот же WSDL, но расположены по разным адресам, а ваш клиент содержит только адрес службы, используемой для его создания?
В этом случае посмотрите на это сообщение: Изменение URL-адреса WSDL (конечной точки) в клиенте JAX-WS.