2010-09-09 2 views
2

Я написал Java WebService, развернуть его на моем коте и получил доступ к WSDL сервиса через мой веб-браузер, все выглядит хорошо. Следующим шагом было создание прокси-класса, который может использоваться клиентом для связи с веб-сайтом. Это то, что я сделал следующий:WebService прокси-классы

Давайте предположим, что мой WSDL доступен через: http://localhost:8080/testSvc/testSvc?wsdl

Используя инструмент wsimport, сгенерировать прокси-сервер с помощью следующей команды: $> wsimport http://localhost:8080/testSvc/testSvc?wsdl

Проблема заключается в том, что localhost: 8080 становится жестко закодированным в сгенерированных классах, и если я развертываю службу на порте, отличном от 8080, то клиент не сможет достичь этого, так как клиент все равно попытается получить доступ к службе на порту 8080.

Есть ли вообще разработки прокси-классов i n каким образом номер порта не является жестко запрограммированным? Чтобы мы могли развернуть службу на любом порту?

Я попытался обновить ENDPOINT_ADDRESS_PROPERTY, но это не полезно, так как код не в момент его instanties экземпляр прокси-класса. Он никогда не достигает точки, где я могу перезаписать ENDPOINT_ADDRESS, что он готов из класса прокси.

ответ

5

Один из способов заключается в использовании параметра wsimport

-wsdllocation <location> 

и указать его на новый WSDL.

Или вы можете использовать опцию

-catalog.

Чтобы изменить адрес динамически использовать такой код:

service = new Service(); 
port = service.getxxxPort(); 

((BindingProvider) port).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, newUrl); 
-1

Используйте -keepparameter, чтобы сохранить исходные файлы, генерируемые wsimport. Оттуда вы можете изменить URL-адрес конечной точки в исходном коде, создаваемом wsimport, по своему усмотрению.

+0

URL-адрес жестко закодировано в нескольких clasess так его не очень элегантное решение ... – Julia