![]() ![]() ![]() ![]() |
以下の節では、XML カタログの使用方法について説明します。
アプリケーションで XML カタログを使用すると、WSDL や XSD などのインポート済み XML リソースを、Web サービスの記述の一部ではないソースから参照できます。この方法による XML リソースのリダイレクトは、パフォーマンスを向上させるため、またはローカル環境においてアプリケーションを常に正しく実行できるようにするために必要になる場合があります。
たとえば、クライアントの生成時には WSDL にアクセスできるかもしれませんが、クライアントの実行時には WSDL にアクセスできなくなっているかもしれません。ネットワーク経由で参照できるリソースではなく、ローカルのリソースやアプリケーションにバンドルされているリソースを参照する必要があるかもしれません。XML カタログ ファイルを使用すると、Web サービスが実行時に使用する WSDL の場所を指定できます。
次の表に、WebLogic Server Ant タスクで 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 フォルダにコピーされます。
jax-ws-catalog.xml ファイルが、クライアントの実行時環境にコピーされないようにすることもできます。詳細については、「クライアント ランタイムでの XML カタログの無効化」を参照してください。
|
|||
|
|||
|
wsdlget
を使用して、WSDL とそのインポート済み XML リソースのローカル コピーを取得する方法。これらのファイルは、アプリケーションにパッケージ化し、XML カタログ内から参照できます。「XML リソースのローカル コピーの取得」を参照してください。
XML カタログの詳細については、Oasis XML Catalogs 仕様を参照してください。
XML カタログは、以下のいずれかの方法で作成し、build.xml
ファイル内の clientgen
または wsdlc
Ant タスクから参照できます。
build.xml
ファイル内の clientgen
または wsdlc
Ant タスクから catalogs
属性を使用して参照します。詳細については、「外部 XML カタログを定義する」を参照してください。<xmlcatalog>
要素を使用して XML カタログを直接 build.xml
ファイルに埋め込み、<xmlcatalog>
子要素を使用して build.xml
ファイル内の clientgen
または wsdlc
Ant タスクから参照します。詳細については、「XML カタログを埋め込む」を参照してください。
衝突が発生した場合は、外部 XML カタログに定義されているエントリよりも、埋め込み XML カタログに定義されているエントリが優先されます。
注意 : | wsdlget Ant タスクを使用すると、XML リソースのローカル コピーを取得できます。詳細については、「クライアント ランタイムでの XML カタログの無効化」を参照してください。 |
catalogs
属性を使用して build.xml
ファイル内の clientgen
または wsdlc
Ant タスクから参照します。「外部 XML カタログ ファイルを参照する」を参照してください。
<catalog>
要素は XML カタログのルート要素で、XML カタログ エントリのコンテナとして機能します。XML カタログ エンティティを指定するには、たとえば system
要素や public
要素を使用します。
<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>
XML カタログ ファイルの詳しい構文については、Oasis XML Catalogs 仕様を参照してください。
作成した 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>
build.xml
ファイル内に埋め込み XML カタログを作成します。「埋め込み XML カタログを作成する」を参照してください。xmlcatalog
子要素を使用して clientgen
または wsdlc
Ant タスクから参照します。「埋め込み 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 カタログの詳しい構文については、Oasis XML Catalogs 仕様を参照してください。
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 カタログの定義と参照」に従って 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 カタログ アーティファクトの生成は、clientgen
の genRuntimeCatalog
属性を 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
ファイルに埋め込まれているすべてのエントリが含まれていることを確認します。
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>
![]() ![]() ![]() |