У меня есть весенний веб-сервис, для которого у меня есть схема в каталоге:
- WebRoot / DataContract / person.xsd
- WebRoot / DataContract / суб-person.xsd
Где sub-person.xsd включен в person.xsd, то есть:
в Person.xsd:
<xsd:import namespace="http://www.mynamespace.org/xml/sub-person"
schemaLocation="sub-person.xsd"/>
Я определил wsdl как:
<bean id="personserv" class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition">
<property name="schemaCollection" ref="schemaCollection"/>
<property name="portTypeName" value="personserv"/>
<property name="locationUri" value="/ws/personnelService/"/>
<property name="targetNamespace" value="http://www.mynamespace.org/definitions"/>
</bean>
Я могу получить доступ к файлу wsdl, используя:
http://localhost:8080/myapp/ws/personnelService/personserv.wsdl
Тем не менее, при использовании этого wsdl клиент может получить person.xsd и не может получить sub-person.xsd, сообщив об ошибке, не удалось загрузить
http://localhost:8080/myapp/ws/personnelService/sub-person.xsd
У меня вопрос, как я могу сделать sub-person.xsd доступным в этом месте URI?
Я также изменил местоположение, указанное в person.xsd как:
<xsd:import namespace="http://www.mynamespace.org/xml/sub-person"
schemaLocation="/DataContract/sub-person.xsd"/>
, который клиент затем попытался найти sub-person.xsd по адресу:
http://localhost:8080/sub-person.xsd что не правильно.
Еще одна попытка была:
<xsd:import namespace="http://www.mynamespace.org/xml/sub-person"
schemaLocation="DataContract/sub-person.xsd"/>
, который клиент затем попытался найти sub-person.xsd по адресу:
http://localhost:8080/myapp/ws/personnelService/DataContract/sub-person.xsd