Я развертываю веб-сервис SOAP с использованием Apache CXF на разных серверах. WSDL содержит эту строку:
<xsd:import namespace="http://schemas.xxx.net/xsd/gameserver/types/types_v1_0" schemaLocation="types_v1_0.xsd">
когда клиент обращается к WSDL, schemaLocation завершается, чтобы сформировать абсолютный путь:
schemaLocation
<xsd:import namespace="http://schemas.xxx.net/xsd/gameserver/type/types_v1_0" schemaLocation="http://moss.xxx.local:8080/gameserver/webservices/base_v1?xsd=types_v1_0.xsd">
Моя проблема: на некоторых серверах это приводит к повреждению URL:
<xsd:import namespace="http://schemas.xxx.net/xsd/gameserver/types/types_v1_0" schemaLocation="http://localhost8888gameserver/webservices/base_v1?xsd=types_v1_0.xsd">
или даже
<xsd:import namespace="http://schemas.xxx.net/xsd/gameserver/types/types_v1_0" schemaLocation="jen.x.local8080gameserver/webservices/base_v1?xsd=types_v1_0.xsd">
Кто-нибудь сталкивался с этой проблемой? Что может быть причиной этого? Похоже, сегодня оно появилось внезапно при развертывании текущей версии приложения, но я не могу найти никаких подозрительных изменений, в частности, то, что WSDL вообще не был изменен.
Оказывается, URL-адрес получен из атрибута publishedEndpointUrl элемента <jaxws:endpoint> в cxf-context.xml, который был ошибочным на некоторых серверах из-за проблем в профилях Maven.
publishedEndpointUrl
<jaxws:endpoint>
cxf-context.xml