Как указать местоположение схемы в xsd файле?

У меня есть xsd файл Foo.xsd. Я попробовал следующие способы отослать его в файле WSDL, но это не работает.

1) помещенный xsd файл в локальную файловую систему и импортированный это как

<xsd:import namespace="http://ws.test.com/" schemaLocation="file:///D:/wsdl/Foo.xsd"></xsd:import>

2) Помещенный xsd файл в веб-корневую папку и импортированный как

<xsd:import namespace="http://ws.test.com/" schemaLocation="http://localhost:8080/Xfire/Foo.xsd"></xsd:import>

Когда я выполняю клиент, я становлюсь пустым для полей объекта ответа. Но это работает, когда я встраиваю определение типа в самом WSDL.

Как мы указываем путь к внешнему xsds?

Я использую xFire 1.2.6 для генерации веб-сервисов. Клиент сгенерирован с помощью задачи Ant xFire WSGen.

12
задан Arne Burmeister 20 May 2010 в 09:45
поделиться

1 ответ

Доступ к WSDL осуществляется по протоколу HTTP с любого хоста, поэтому клиент не может получить доступ ни к URL-адресу файла, ни к локальному хосту (который будет его собственным хостом, а не вашим сервером). Лучшим решением будет путь к файлу xsd:

Относительный путь:

<xsd:import namespace="http://ws.test.com/" schemaLocation="../Foo.xsd"/>

Абсолютный путь:

<xsd:import namespace="http://ws.test.com/" schemaLocation="/myapp/Foo.xsd"/>

Для абсолютного пути вам необходимо знать путь контекста вашего веб-приложения, поэтому я бы предпочел относительный путь .

17
ответ дан 2 December 2019 в 19:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: