ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server JAX-WS Webサービスの高度な機能のプログラミング
11g リリース1(10.3.5)
B61633-03
  目次へ移動
目次

前
 
次
 

14 XMLカタログの使用

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

XMLカタログの概要

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

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

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

表14-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>