Можно ли настроить формат URL-адреса для веб-службы Axis2 при использовании подхода с первым кодом (где Axis2 генерирует URL-адрес)? В частности, мы хотели бы исключить имя порта из URL.
У нас есть веб-сервис, созданный с использованием Axis2 с использованием подхода «сначала код». Это означает, что WSDL генерируется из классов Java и их аннотаций.
URL-адрес веб-службы в настоящее время:
http://www.example.com/services/AvailabiltyService.AvailabilityServicePort
Но мы бы хотели, чтобы URL был сокращен до:
http://www.example.com/services/AvailabiltyService
Элемент <service>
сгенерированного WSDL в настоящее время выглядит следующим образом:
<service name="AvailabilityService">
<port name="AvailabilityServicePort" binding="tns:AvailabilityServicePortBinding">
<soap:address location="http://www.example.com/services/AvailabilityService.AvailabilityServicePort/"/>
</port>
</service>
Из того, что я понимаю, URL определяется следующим образом:
- Часть "/ services /" указана в файле web.xml. Шаблон "/ services / *" указывается в файле web.xml для маршрутизации всех запросов, соответствующих этому шаблону, в AxisServlet.
- Часть «AvailableabiltyService» является названием службы. По умолчанию используется значение параметра «name» аннотации @WebService, к которому добавлено слово «Service». Это можно изменить, добавив параметр «serviceName» в аннотацию @WebService. В нашем случае мы включили параметр «serviceName» в аннотацию @WebService со значением «AvailabilityService».
- Часть «AvailableabiltyServicePort» - это имя порта. По умолчанию используется имя службы с добавленным словом «Порт». Это можно изменить, добавив параметр «portName» в аннотацию @WebService. В нашем случае мы не включили параметр portName в аннотацию @WebService.
Я понимаю, что у нас был бы контроль над URL, если бы мы использовали подход сначала контракта, где мы сами писали бы WSDL, но мы предпочитаем придерживаться подхода кода сначала.
Спасибо, что уделили время.