2013-03-20 2 views
0

Я потребляющих веб-сервиса, где файл WSDL содержит импорт других WSDL и XSD схемы, например:Инструмент для загрузки/импорта WSDL-файлы для клиента JAX-WS

<import namespace="http://my.api.com/" location="http://other.server.com:8888/context/services/MyService?wsdl=1"/> 

, который в свою очередь может импортировать другие файлы

<xsd:import namespace="http://my.api.com/" schemaLocation="http://other.server.com:8888/context/services/MyService?xsd=1"/> 

Клиент создан cxf с плагином maven. Основной файл WSDL добавляется как ресурс pathpath. Однако во время выполнения кажется, что клиенту действительно нужен доступ к other.server.com:8888 для полного разрешения WSDL. Поэтому возникает вопрос: существует ли инструмент для импорта и разрешения всех URL-адресов в WSDL, чтобы он не зависел от абсолютных URL-адресов серверов в других импортах в WSDL и подходит для включения в проект клиента?

Мы не контролируем WSDL, поэтому мы не можем изменить его в источнике.

Edit: Ищете инструмент, который работает на Linux

+0

Похоже, что это возможно с помощью SoapUI, хотя я бы предпочел инструмент командной строки для работы. – NilsH

ответ

1

Проверьте ServiceModel Metadata Utility Tool (Svcutil.exe) из Windows SDK.

svcutil /t:metadata http://service/metadataEndpoint 

Этот инструмент находит или обнаруживает, один или более связанных с ними документов, которые описывают конкретный XML веб-службы с помощью Web Services Description Language (WSDL).

+0

Спасибо, но я надеялся на что-то, что работало в Linux. – NilsH

0

Я не знаю, правильно ли я понял ваш вопрос. Я тоже сражаюсь с Jax-ws/SOAP. :)

Если вам нужно сгенерировать классы java, необходимые для вызова веб-службы, вы можете использовать Apache CXF. Внутри у вас есть wsdl2java. Вы можете использовать его в linux. Еще один вариант в Java SDK, в папке bin есть wsimport, который вы также можете использовать.

Редактировать: вы можете изменить конечный URL-адрес во время выполнения, используя класс службы, созданный Apache CXF.

new SomeRandomJaxWSService(new URL(wsdl),new QName(namespace, serviceName)) 
+0

Проблема заключается не в том, чтобы генерировать файлы, а в том, чтобы разрешать внутренние ссылки пространства имен на локальные, а не на удаленные URI при их создании. – NilsH

Смежные вопросы