Подтвердить что ты не робот

Как указать расположение схемы в файле 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>

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

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

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

4b9b3361

Ответ 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"/>

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