Как указать расположение схемы в файле xsd? - PullRequest
12 голосов
/ 20 мая 2010

У меня есть файл 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 для создания веб-сервисов. Клиент генерируется с помощью муравейной задачи xFire WSGen.

1 Ответ

17 голосов
/ 20 мая 2010

Доступ к 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"/>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...