我有一个spring webservice,我在一个目录中有架构:
- WebRoot/DataContract/person.xsd
- WebRoot/DataContract/sub-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