ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server JAX-WS を使用した Web サービスの高度な機能のプログラミング
11g リリース 1 (10.3.1)
B55543-01
  目次
目次

戻る
戻る
 
次へ
次へ
 

7 XML カタログの使用

以下の節では、XML カタログの使用方法について説明します。

XML カタログの概要

アプリケーションで XML カタログを使用すると、WSDL や XSD などのインポート済み XML リソースを、Web サービスの記述の一部ではないソースから参照できます。この方法による XML リソースのリダイレクトは、パフォーマンスを向上させるため、またはローカル環境においてアプリケーションを常に正しく実行できるようにするために必要になる場合があります。

たとえば、クライアントの生成時には WSDL にアクセスできるかもしれませんが、クライアントの実行時には WSDL にアクセスできなくなっているかもしれません。ネットワーク経由で参照できるリソースではなく、ローカルのリソースやアプリケーションにバンドルされているリソースを参照する必要があるかもしれません。XML カタログ ファイルを使用すると、Web サービスが実行時に使用する WSDL の場所を指定できます。

次の表に、WebLogic Server Ant タスクで XML カタログがどのようにサポートされるかをまとめます。

表 7-1 WebLogic Server Ant タスクでの XML カタログのサポート

Ant タスク 説明
clientgen

XML カタログは、以下のいずれかの方法で定義および参照できます。

  • catalog 属性を使用して、外部 XML カタログ ファイルの名前を指定する。詳細については、「外部 XML カタログの定義」を参照してください。

  • <xmlcatalog> 子要素を使用して埋め込んだ XML カタログ ファイルを参照する。詳細については、「XML カタログを埋め込み」を参照してください。

クライアントをビルドするために clientgen Ant タスク (clientgen タスクが埋み込まれている場合は jwsc Ant タスク) を実行すると、jax-ws-catalog.xml ファイルが生成されてクライアントの実行時環境にコピーされます。jax-ws-catalog.xml ファイルには、外部 XML カタログ ファイルに定義されている XML カタログや、build.xml ファイルに埋み込まれている XML カタログが格納されています。このファイルは、参照される XML ターゲットとともに、エンタープライズ アプリケーションの META-INF フォルダ、または Web アプリケーションの WEB-INF フォルダにコピーされます。

注意 : XML リソースの内容は、このプロセスの間は影響を受けません。

jax-ws-catalog.xml ファイルが、クライアントの実行時環境にコピーされないようにすることもできます。詳細については、「 クライアント ランタイムでの XML カタログの無効化」を参照してください。

wsdlc

XML カタログは、以下のいずれかの方法で定義および参照できます。

  • catalog 属性を使用して、外部 XML カタログ ファイルの名前を指定する。詳細については、「外部 XML カタログの定義」を参照してください。

  • <xmlcatalog> 子要素を使用して埋め込んだ XML カタログ ファイルを参照する。詳細については、「XML カタログを埋め込み」を参照してください。

wsdlc Ant タスクを実行すると、コンパイル済みの WSDL JAR ファイルまたは展開されたディレクトリに XML リソースがコピーされます。

wsdlget

XML カタログは、以下のいずれかの方法で定義および参照できます。

  • catalog 属性を使用して、外部 XML カタログ ファイルの名前を指定する。詳細については、「外部 XML カタログの定義」を参照してください。

  • <xmlcatalog> 子要素を使用して埋め込んだ XML カタログ ファイルを参照する。詳細については、「XML カタログを埋め込み」を参照してください。

wsdlget Ant タスクを実行すると、WSDL とインポートされたリソースが指定のディレクトリにダウンロードされます。

注意 : XML リソースの内容は、XML カタログに定義されているリソースの参照のため更新されます。


以降の節では、以下の内容について説明します。

XML カタログの詳細については、(http://www.oasis-open.org/committees/download.php/14809/xml-catalogs.html) の Oasis XML カタログ 仕様 を参照してください。

XML カタログの定義と参照

XML カタログは、以下のいずれかの方法で作成し、build.xml ファイル内の clientgen または wsdlc Ant タスクから参照できます。

衝突が発生した場合は、外部 XML カタログに定義されているエントリよりも、埋め込み XML カタログに定義されているエントリが優先されます。


注意 :

wsdlget Ant タスクを使用すると、XML リソースのローカル コピーを取得できます。詳細については、「クライアント ランタイムでの XML カタログの無効化」を参照してください。

外部 XML カタログの定義

外部 XML カタログを定義するには、次の手順に従います。

  1. リダイレクトしたい XML リソースを定義した外部 XML カタログを作成します。「外部 XML カタログ ファイルの作成」を参照してください。

  2. 作成した XML カタログ ファイルを、catalogs 属性を使用して build.xml ファイル内の clientgen または wsdlc Ant タスクから参照します。「外部 XML カタログ ファイルの参照」を参照してください。

以降の節では、これらの各手順について詳しく説明します。

外部 XML カタログ ファイルの作成

<catalog> 要素は XML カタログのルート要素で、XML カタログ エントリのコンテナとして機能します。XML カタログ エンティティを指定するには、たとえば system 要素や public 要素を使用します。

次に、XML カタログ ファイルのサンプルを示します。

<catalog xmln="urn:oasis:names:tc:entity:xmlns:xml:catalog"   
    prefer="system">
    <system systemId="http://foo.org/hello?wsdl" 
            uri="HelloService.wsdl" />
    <public publicId="ISO 8879:1986//ENTITIES Added Latin 1//EN" 
            uri="wsdl/myApp/myApp.wsdl"/>
</catalog>

このサンプルで注目すべき点は以下のとおりです。

  • <catalog> ルート要素によって XML カタログのネームスペースが定義され、システムの一致が優先されることを指定するため prefer 属性が system に設定されている。

  • <system> 要素により、URI 参照がシステム ID に関連付けられている。

  • <public> 要素により、URI 参照がパブリック ID に関連付けられている。

XML カタログ ファイル構文の詳細については、(http://www.oasis-open.org/committees/download.php/14809/xml-catalogs.html) の Oasis XML カタログ仕様を参照してください。

外部 XML カタログ ファイルの参照

作成した XML カタログ ファイルを build.xml ファイル内の clientgen または wsdlc Ant タスクから参照するには、catalogs 属性を使用します。

次のサンプルでは、clientgen を使用して XML カタログを参照する方法を示します。関連するコード行は太字で示されています。

<target name="clientgen">
<clientgen 
     type="JAXWS"
     wsdl="${wsdl}"
     destDir="${clientclasses.dir}"
     packageName="xmlcatalog.jaxws.clientgen.client"
     catalog="wsdlcatalog.xml"/> 
</clientgen>
</target>

XML カタログを埋め込み

XML カタログを埋め込むには、次の手順に従います。

  1. build.xml ファイル内に埋め込み XML カタログを作成します。「埋め込み XML カタログの作成」を参照してください。

  2. 作成した埋め込み XML カタログを、xmlcatalog 子要素を使用して clientgen または wsdlc Ant タスクから参照します。「埋め込み XML カタログの参照」を参照してください。

以降の節では、これらの各手順について詳しく説明します。


注意 :

衝突が発生した場合は、外部 XML カタログに定義されているエントリよりも、埋め込み XML カタログに定義されているエントリが優先されます。

埋め込み XML カタログの作成

<xmlcatalog> 要素を使用すると、XML カタログを直接 build.xml ファイルに埋め込むことができます。次のサンプルに、build.xml ファイルに埋め込まれた XML カタログを示します。

<xmlcatalog id="wsimportcatalog">
     <entity publicid="http://helloservice.org/types/HelloTypes.xsd"
             location="${basedir}/HelloTypes.xsd"/>
</xmlcatalog>

XML カタログ ファイル構文の詳細については、(http://www.oasis-open.org/committees/download.php/14809/xml-catalogs.html) の Oasis XML カタログ仕様を参照してください。

埋め込み XML カタログの参照

clientgen または wsdlc Ant タスクの <xmlcatalog> 子要素を使用すると、埋め込み XML カタログを参照できます。<xmlcatalog> 要素を指定するには、次の構文を使用します。

<xmlcatalog refid="id"/>

<Xmlcatalog> 子要素によって参照される id は、埋め込み XML カタログの ID と一致している必要があります。

次のサンプルでは、clientgen を使用して埋め込み XML カタログを参照する方法を示します。関連するコード行は太字で示しています。

<target name="clientgen">
<clientgen 
     type="JAXWS"
     wsdl="${wsdl}"
     destDir="${clientclasses.dir}"
     packageName="xmlcatalog.jaxws.clientgen.client"
     catalog="wsdlcatalog.xml"/>
     <xmlcatalog refid="wsimportcatalog"/>
</clientgen>
</target>
<xmlcatalog id="wsimportcatalog">
     <entity publicid="http://helloservice.org/types/HelloTypes.xsd"
             location="${basedir}/HelloTypes.xsd"/>
</xmlcatalog>

クライアント ランタイムでの XML カタログの無効化

XML カタログの定義と参照」に従って build.xml ファイル内で XML カタログを定義して参照する場合、clientgen Ant タスクを実行してクライアントをビルドすると、デフォルトでは jax-ws-catalog.xml ファイルが生成されてクライアント実行時環境にコピーされます。jax-ws-catalog.xml ファイルには、外部 XML カタログ ファイルに定義されている XML カタログや、build.xml ファイルに埋み込まれている XML カタログが格納されています。このファイルは、参照される XML ターゲットとともに、エンタープライズ アプリケーションの META-INF フォルダ、または Web アプリケーションの WEB-INF フォルダにコピーされます。

クライアント実行時環境での XML カタログ アーティファクトの生成は、clientgengenRuntimeCatalog 属性を false に設定することで無効にできます。次に例を示します。

<clientgen 
     type="JAXWS"
     wsdl="${wsdl}"
     destDir="${clientclasses.dir}"
     packageName="xmlcatalog.jaxws.clientgen.client"
     catalog="wsdlcatalog.xml"
     genRuntimeCatalog="false"/>

この場合、jax-ws-catalog.xml ファイルは実行時環境にはコピーされません。

genRuntimeCatalog 属性を false に設定した状態でクライアントを生成した場合、後からクライアント ランタイムで XML カタログを有効にするには、jax-ws-catalog.xml ファイルを手動で作成し、エンタープライズ アプリケーションの META-INF フォルダまたは Web アプリケーションの WEB-INF フォルダにコピーする必要があります。jax-ws-catalog.xml ファイルには、外部 XML カタログ ファイルに定義されているすべてのエントリ、または build.xml ファイルに埋め込まれているすべてのエントリが含まれていることを確認します。

XML リソースのローカル コピーの取得

wsdlget Ant タスクを使用すると、WSDL や XSD ファイルなどの XML リソースのローカル コピーを取得できます。その後は、「XML カタログの定義と参照」で説明したとおり、XML カタログを使用して XML リソースのローカル コピーを参照できます。

次に示す Ant build.xml ファイルの抜粋に、wsdlget Ant タスクを使用して WSDL とその XML リソースをダウンロードする方法を示します。XML リソースは、Ant タスクの実行ディレクトリ内の wsdl フォルダに保存されます。

<target name="wsdlget"
     <wsdlget 
          wsdl="http://host/service?wsdl"
          destDir="./wsdl/"
     />
</target>