Есть два способа получения WSDL.
Один, где подается жестко закодированный wsdl, например:
https://hostname/contextname/services/myAPIService/myAPI.wsdl
, и другой, где подается сгенерированный wsdl,например:
https://hostname/contextname/services/myAPIService?wsdl
Если вы используете динамический параметр, он будет использовать этот код:
req.getRequestURL().toString();
, чтобы получить URL, который будет использоваться в сгенерированном WSDL.Этот код находится в классе ListingAgent (в пакете org.apache.axis2.transport.http).
Из того, что вы упомянули в своем вопросе, если вы хотите иметь относительное местоположение, это должно быть потому, что вы хотите использоватьна нескольких серверах, поэтому вам нужно будет использовать динамический параметр.
Одна проблема, которую я обнаружил с динамическими параметрами, заключается в том, что если в исходном WSDL-местоположении используется HTTP, то в сгенерированном он все равно будетиспользуйте HTTP, даже если вы использовали HTTPS для доступа к нему.(Это происходит в версии 1.5, которая используется моим проектом)
Другая проблема заключается в том, что вы используете балансировщик нагрузки, потому что сгенерированный WSDL будет создан с расположением конечного сервера вместо балансировщика,Для этого можно расширить классы AxisServlet и ListingAgent, чтобы заменить код, упомянутый выше.