XsdファイルFoo.xsdがあります。次の方法でWSDLファイルを参照しようとしましたが、機能しません。
1)ローカルファイルシステムにxsdファイルを配置し、
<xsd:import namespace="http://ws.test.com/" schemaLocation="file:///D:/wsdl/Foo.xsd"></xsd:import>
2)xsdファイルをWebルートフォルダーに配置し、
<xsd:import namespace="http://ws.test.com/" schemaLocation="http://localhost:8080/Xfire/Foo.xsd"></xsd:import>
クライアントを実行すると、応答オブジェクトのフィールドがnullになります。しかし、これは、WSDL自体の中に型定義を埋め込むと機能します。
外部xsdsへのパスを指定するにはどうすればよいですか?
Webサービスの生成にxFire1.2.6を使用しています。クライアントは、xFire WSGenantタスクを使用して生成されます。
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"/>
絶対パスの場合は、Webアプリケーションのコンテキストパスを知っている必要があるため、相対パスを使用します。