次のようなディレクトリにスキーマがあるSpringWebサービスがあります。
- 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 / personalService / personserv.wsdl
ただし、このwsdlを使用すると、クライアントはperson.xsdをフェッチでき、sub-person.xsdをフェッチできず、ロードに失敗したというエラーが発生します。
http:// localhost:8080 / myapp / ws / personalService / sub-person.xsd
私の質問は、そのURIの場所でsub-person.xsdを利用できるようにするにはどうすればよいですか?
また、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 / personalService / DataContract / sub-person.xsd