Я использую CXF для создания клиента для подключения к удаленному веб-сервису. У меня нет никакого контроля над веб-службой или определением wsdl.
wsdl веб-сервиса делает несколько ссылок на localhost, например:
<soap12:address location="http://localhost:8002/request" />
<wsa10:EndPointReference>
<wsa10:Address>http://localhost:8002/request</wsa10:Address>
</wsa10:EndPointReference>
Я пытаюсь сгенерировать свой клиент, используя цель wsdl2java maven, указывая на удаленный wsdl:
...
<wsdlOptions>
<wsdlOption>
<wsdl>http://remotehost:8002/?wsdl</wsdl>
<wsdlOption>
<wsdlOptions>
...
Когда я пытаюсь собрать клиент, цель не выполняется из-за ссылок на локальный хост:
org.apache.cxf.wsd11.WSDLRuntimeException: Fail to create wsdl definition from : http://remotehost:8002/?wsdl [ERROR] caused by : WSDLException (at
/wsdldefinitions/wsdl:import) faultCode=PARSER_ERROR: Problem parsing
'http://localhost:8002/?wsdl=wsdl0'.: java.net.ConnectionException: Connection refused: connect
Есть ли способ заставить CXF понять, что ссылки localhost относятся к хосту wsdl, и автоматически заменить их соответствующим именем хоста при создании клиента?
Мне удалось создать клиента, скопировав wsdl в локальный файл и вручную заменив ссылки на локальные хосты соответствующими именами хостов. Однако мне нужно, чтобы клиент был сгенерирован из удаленного определения wsdl, а не из локального файла. Кто-нибудь знает, как этого можно достичь? В настоящее время я использую cxf версии 2.6.0.
Заранее спасибо за любые ответы.
(Я заменил свои фактические имена служб общими именами, такими как удаленный хост)