web-dev-qa-db-ja.com

xsdファイルでスキーマの場所を指定するにはどうすればよいですか?

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タスクを使用して生成されます。

13
Manoj

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アプリケーションのコンテキストパスを知っている必要があるため、相対パスを使用します。

18
Arne Burmeister