Есть ли реализация JAX-WS, которая поддерживает динамическое пространство имен в сгенерированном клиенте? - PullRequest
4 голосов
/ 23 марта 2010

Я сгенерировал клиент JAX-WS (прокси-API), используя JAXWS-RI wsimport.bat из WSDL с пространством имен "http://a.mydomain". Я хотел бы повторно использовать тот же сгенерированный прокси для службы, имеющей пространство имен "http://b.mydomain", но пространство имен назначения" http://a.mydomain", закодировано во всех созданных классах.

Кто-нибудь знает какое-либо хорошее решение этой проблемы с использованием JAXWS-RI или любой другой реализации JAXWS? Я бы хотел не создавать прокси-классы с использованием нового пространства имен WSDL /.

Спасибо за любой ответ.

Ответы [ 2 ]

1 голос
/ 14 июня 2011

Шаги включают в себя:

  1. Создайте экземпляр службы, используя метод Service.create для которого вам нужно знать местоположение wsdl, имя службы и URL-адрес пространства имен службы.
    например URL wsdlLocation = новый URL ("http://example.org/my.wsdl"); QName serviceName = new QName ("http://example.org/sample"," MyService "); Service s = Service.create (wsdlLocation, serviceName);

  2. Получить прокси службы (сервисный порт для подключения) с помощью метода Service.getPort (). Для этого вам нужно знать имя класса реализации конечной точки.
    например MyService port = s.getPort (MyService.class);

теперь вы можете вызывать методы через прокси. измените URL-адрес пространства имен в соответствии с вашими требованиями.

0 голосов
/ 11 ноября 2010

RI Jax-ws создает конструктор, подобный этому:

public SomeWebServiceEndpoint(URL wsdlLocation, QName serviceName) 

В элементе QName вы можете указать пространство имен во время выполнения (или использовать другое расположение WSDL, например, PROD или TEST).

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

...