ランタイム クラス パスに含まれる jar ファイル内にある xml スキーマ (xsd) ファイルがあります。私の Wsdl では、jar ファイル内の場所を指定してスキーマをインポートする必要があります。
XML カタログを使用しようとしましたが、使用しているサーバー (websphere) が xml カタログ参照を解決しません。
jar ファイルに含まれるすべてのファイルには、独自の URL があります。たとえば、jar ファイルの絶対パス名 (Windows の場合) の場合:
C:\project\jars\somestuff.jar
およびその jar に含まれるスキーマのパス名 (jar のルートからの相対パス):
/xml/schemas/myschema.xsd
スキーマ ファイルへの完全な URL は次のようになります。
jar:file:/C:/project/jars/somestuff.jar!/xml/schemas/myschema.xsd
また、XML スキーマに、その jar にもある他のスキーマへの参照が含まれている場合は、相対パス名 (指定されたスキーマに関連する) を使用できます。
たとえば、myschema.xsd
その jar で見つかった別のスキーマをインポートするとします。
/xml/schemas/general/types.xsd
次に、<xs:import>
要素は次のように指定できます。
<xs:import namespace="http://www.company.org/general/types"
schemaLocation="general/types.xsd"/>
これによりtypes.xsd
、同じjarファイルからロードされます。
スキーマにファイルとしてアクセスすることはできません。ストリームとしてアクセスする必要があります。
Schema schema = schemaFactory.newSchema(new StreamSource(new InputStreamReader(getClass().getResourceAsStream("/xml/schemas/general/types.xsd"))));