提供されたカタログと組み合わせて XSD ファイルをインポートしようとすると、jax-ws ツールチェーンの一部のツール (xjc
およびおそらくwsimport
同様) の動作に問題があります。
たとえばxjc
、カタログ ファイル (例についてはこちら<xs:import>
を参照) が提供されると、要素に有効な要素が含まれていても、カタログに示されている場所からインポートされたスキーマが取得されることを理解していxs:schemaLocation
ます。スキーマはネットワーク経由で取得できます。
これまでのところ、カタログ エントリが属性をオーバーライドするのは理にかなっていschemaLocation
ます。
ただし、カタログ ファイルがローカル ファイルシステムの場所を示しており、ディレクトリ パスの入力ミスなどの何らかの理由でカタログが提供する場所にアクセスできない場合、xjc
ツールは警告なしに値に戻りxs:schemaLocation
、そこからファイルを取得します。さらに悪いことに、この動作は、エントリがカタログで「PUBLIC」とマークされている場合にのみ発生します (私が行ったいくつかのテストからわかる限り)。「SYSTEM」とマークされている場合、xjc
ツールは実際に文句を言います。
だから、私の質問は:
常に一貫した動作をするために、の属性からのフェッチを無効 にして、カタログでインポートされたスキーマを常にルックアップし、見つからない場合は見事に失敗するようにする方法はありますか? これは、のネットワーク フェッチ機能を無効にする方法を尋ねるのと同じではないことに注意してください。xjc
schemaLocation
xjc
xjc
上記に失敗した場合、またはwsimport
実行中にすべてのネットワークアクセスを無効にする方法はありますか?