弹簧地图文件a Url/URI
-
24-09-2019 - |
题
我有一个弹簧服务于我有架构中的一个目录:
- 安装/DataContract/人。划
- 安装/DataContract/子的人。划
在那里亚人。文件中包括的人。文件:
在人。文件:
<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客户可以读取人。文件并无法获取子的人。文件给人一种错误的失败负荷
http://localhost:8080/myapp/ws/personnelService/sub-person.xsd
我的问题是怎样才能让子的人。文件可在该URI的位置?
我也已经改变指定的位置。文件:
<xsd:import namespace="http://www.mynamespace.org/xml/sub-person"
schemaLocation="/DataContract/sub-person.xsd"/>
客户然后试着找到的子的人。文件:
http://localhost:8080/sub-person.xsd 这是不正确的。
另一种尝试是:
<xsd:import namespace="http://www.mynamespace.org/xml/sub-person"
schemaLocation="DataContract/sub-person.xsd"/>
客户然后试着找到的子的人。文件:
http://localhost:8080/myapp/ws/personnelService/DataContract/sub-person.xsd
解决方案
弹簧WS有这个 真漂亮的设施 为处理此,使用Apache XML识共享项目:
<bean id="schemaCollection" class="org.springframework.xml.xsd.commons.CommonsXsdSchemaCollection">
<property name="xsds">
<list>
<value>/DataContract/person.xsd</value>
<value>/DataContract/sub-person.xsd</value>
</list>
</property>
<property name="inline" value="true"/>
</bean>
的 inline
财产是关键的-它会读取在每个架构的文件,及时发现一个 import
或 include
参照从一个到另一个,它将替换参与内容的参考文件。
这个效果是,出的WSDL代控制器是一个单一的文件与所有架构的信息内联,同时仍然保持各种模式的文件单独的服务器。然后你不必担心如果客户可以追参考和解决他们正确,因为有 都 没有引用。
不隶属于 StackOverflow