WebLogic XML プログラマーズ ガイド

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

XML アプリケーション スコーピング

以下の節では、特定のアプリケーションのためにパーサ、トランスフォーマ、外部エンティティ、外部エンティティ キャッシュをコンフィグレーションする方法について説明します。

 


アプリケーション スコーピングの概要

アプリケーション スコープとは、WebLogic Server のコンフィグレーション全体に対してではなく、特定のエンタープライズ アプリケーションに対してリソースをコンフィグレーションすることです。XML の場合、このようなリソースとしては、パーサ、トランスフォーマ、外部エンティティ、および外部エンティティのキャッシュ コンフィグレーションがあります。アプリケーション スコープの最大の利点は、特定のアプリケーションに対するリソースがそのアプリケーション専用になることです。アプリケーション スコーピングによって、アプリケーションごとに異なるパーサをコンフィグレーションしたり、EAR ファイルや展開されたエンタープライズ ディレクトリ内のアプリケーション用に DTD を保管したりすることができます。

アプリケーション スコーピングを使用するもう 1 つのメリットは、リソースを EAR ファイルと関連付けることにより、WebLogic Server の別のインスタンスで、そのサーバのリソースをコンフィグレーションせずにこの EAR ファイルを実行できることです。

特定のアプリケーション用の XML リソースをコンフィグレーションするには、EAR ファイルまたは展開されたエンタープライズ アプリケーション ディレクトリの META-INF ディレクトリにある weblogic-application.xml デプロイメント記述子ファイルに情報を追加します。

注意 : WebLogic Server インスタンス用のパーサ、トランスフォーマ、および外部エンティティ リソースをコンフィグレーションするには、「WebLogic Server XML の管理」で説明するように、Administration Console を使用します。

 


weblogic-application.xml ファイル

weblogic-application.xml ファイルは、エンタープライズ アプリケーション用の WebLogic Server 固有のデプロイメント記述子です。このファイルには、エンタープライズ アプリケーションにより使用される XML、JDBC、EJB などのリソースに関するコンフィグレーション情報が入れられます。標準 J2EE デプロイメント記述子は、application.xml と呼ばれます。

次のサンプル ファイル weblogic-application.xml は、あるエンタープライズ アプリケーション用の XML リソースをコンフィグレーションする方法を示しています。各種要素の本文は太字で示します。

<weblogic-application>
...
<xml>
<parser-factory>
<saxparser-factory>
com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl
</saxparser-factory>
<document-builder-factory>
com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
</document-builder-factory>
<transformer-factory>
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl
</transformer-factory>
</parser-factory>
<entity-mapping>
<entity-mapping-name>My Mapping</entity-mapping-name>
<public-id>-//BEA Systems, Inc.//DTD for cars//EN</public-id>
<system-id>http://www.bea.com/dtds/car.dtd</system-id>
<entity-uri>dtds/car.dtd</entity-uri>
</entity-mapping>
</xml>
</weblogic-application>

XML リソースをコンフィグレーションするためのメイン要素は、<xml> です。次の図に、<xml> 要素の下位要素を示し、その後の節で各要素について説明します。

図 8-1 weblogic-application.xml の <xml> 要素の下位要素

weblogic-application.xml の <xml> 要素の下位要素 icon 要素 ejb 要素 ejb 要素

xml

パーサ、トランスフォーマ、外部エンティティ、外部エンティティ キャッシュなど、エンタープライズ アプリケーション用 XML リソースをコンフィグレーションするためのメイン要素。

parser-factory

エンタープライズ アプリケーション用の特定のパーサまたはトランスフォーマを指定するための親要素。

saxparser-factory

このアプリケーションで SAX スタイル解析のために使用されるファクトリ クラスを指定する要素。この要素が指定されていない場合、WebLogic Server インスタンスに対して指定されたデフォルト SAX パーサ ファクトリが使用されます。

document-builder-factory

このアプリケーションで DOM スタイル解析のために使用されるファクトリ クラスを指定する要素。この要素が指定されていない場合、WebLogic Server インスタンスに対して指定されたデフォルト DOM パーサ ファクトリが使用されます。

transformer-factory

このアプリケーションで javax.xml.transform パッケージによりドキュメントを変換する場合に使用されるファクトリ クラスを指定する要素。この要素が指定されていない場合、WebLogic Server インスタンスに対して指定されたデフォルト XSLT トランスフォーマ ファクトリが使用されます。

entity-mapping

DTD やスキーマなど、XML ファイル内のエンティティ宣言をエンティティのローカル コピーにマッピングするための親要素。

entity-mapping-name

エンティティ マッピング宣言の名前を指定する要素。

public-id

次のようなエンティティのパブリック ID を指定する要素。

 -//BEA Systems, Inc.//DTD for cars//EN

system-id

次のようなエンティティのシステム ID を指定する要素。

http://www.bea.com/dtds/car.dtd

entity-uri

エンティティの URI を指定する要素。このパスは、EAR アーカイブまたは展開ディレクトリのメイン ディレクトリを基準とする相対パスです。

たとえば、dtds/car.dtd は、メイン EAR アーカイブ (META-INF ディレクトリと同じレベル) に dtds というディレクトリがあり、そこに car.dtd というファイルがあることを示します。

when-to-cache

外部エンティティをキャッシュする時期を指定する要素。有効な値は以下のとおり。

デフォルト値は cache-on-reference です。

cache-timeout-interval

キャッシュされた外部エンティティが古くなる (期限切れになる) までの秒数を指定する要素。キャッシュされたコピーがこの期間を超えた場合、WebLogic Server は、EAR アーカイブまたは展開ディレクトリのメイン ディレクトリを基準に指定された相対 URL またはパス名から外部エンティティを再取得します。

このフィールドのデフォルト値は、120 秒です。

 


エンタープライズ アプリケーション用のパーサまたはトランスフォーマのコンフィグレーション

XML アプリケーションが、WebLogic Server にコンフィグレーションされているデフォルト パーサまたはトランスフォーマとは異なるパーサまたはトランスフォーマを使用するように指定できます。それには、XML アプリケーションの入っている EAR ファイルまたは展開ディレクトリの weblogic-application.xml を更新します。

エンタープライズ アプリケーション用にデフォルト以外のパーサまたはトランスフォーマをコンフィグレーションするには、以下の手順を実行します。

  1. <xml> 要素の <parser-factory> 下位要素を使用し、エンタープライズ アプリケーションのために、SAX および DOM スタイル解析用と XSLT 変換用のファクトリ クラスをコンフィグレーションします。次に例を示します。
  2.      <parser-factory>
    <saxparser-factory>
    com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl
    </saxparser-factory>
    <document-builder-factory>
    com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
    </document-builder-factory>
    <transformer-factory>
    com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl
    </transformer-factory>
    </parser-factory>

    この weblogic-application.xml ファイルに対応するアプリケーションでは、SAX スタイル解析には com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl ファクトリ クラス、DOM スタイル解析には com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl ファクトリ クラス、XSLT 変換には com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl クラスが使用されます。

  3. パーサ クラスまたはトランスフォーマ クラスを EAR アーカイブに対してローカルにするには、そのクラスの入っている JAR ファイルを EAR ファイルの任意の場所に置き、META-INF/MANIFEST.MF ファイル内の Class-Path 変数を更新します。
  4. たとえば、ディレクトリ lib/xml にある myparser.jar という JAR ファイルにパーサ クラスまたはトランスフォーマ クラスを置く場合、以下に示すように MANIFEST.MF ファイルを更新します。

    Manifest-Version: 1.0
    Created-By: 1.3.1_01 (Sun Microsystems Inc.)
    Class-Path: lib/xml/myparser.jar
  5. パーサ クラスまたはトランスフォーマ クラスを EAR アーカイブ以外の場所に格納する場合は、クラスの入っている JAR ファイルの完全パス名を含むように WebLogic Server CLASSPATH 変数を必ず更新してください。

 


エンタープライズ アプリケーション用の外部エンティティのコンフィグレーション

DTD などの外部エンティティは、Web から取得するだけでなく、そのローカル コピーを EAR アーカイブまたは展開ディレクトリに格納しておくこともできます。

エンタープライズ アプリケーション用の外部エンティティをコンフィグレーションするには、以下の手順を実行します。

  1. EAR アーカイブのメイン ディレクトリの下にディレクトリ lib/xml/registry を作成します。
  2. DTD のような外部エンティティをそのディレクトリにコピーします。
  3. weblogic-application.xml ファイルを更新し、<xml> 要素の <entity-mapping> 下位要素を使用して、アプリケーションで処理される XML ファイルのエンティティ宣言にエンティティの名前をマップします。以下に例を示します。
  4.      <entity-mapping>
    <entity-mapping-name>My Mapping</entity-mapping-name>
    <public-id>-//BEA Systems, Inc.//DTD for cars//EN</public-id>
    <system-id>http://www.bea.com/dtds/car.dtd</system-id>
    <entity-uri>dtds/car.dtd</entity-uri>
    </entity-mapping>

    この例では、car.dtd という DTD のローカル コピーが EAR アーカイブまたは展開ディレクトリのメイン ディレクトリの下にある lib/xml/registry/dtds ディレクトリに格納されます。このエンティティのパブリック ID は -//BEA Systems, Inc.//DTD for cars//EN で、システム ID は http://www.bea.com/dtds/car.dtd です。アプリケーションが XML ファイルの解析中に、これらの ID のいずれかを使用しているエンティティ宣言を検出すると、その宣言は car.dtd ファイルに置き換えられます。

注意 : エンティティのローカル コピーをマップする各エンティティ宣言について、<entity-mapping> 要素を指定してください。

 


エンタープライズ アプリケーション用の外部エンティティ キャッシュのコンフィグレーション

サーバ起動時、またはエンティティの最初の参照時のいずれかに、EAR アーカイブのメイン ディレクトリを基準にした相対 URL またはパス名で参照される外部エンティティを WebLogic Server がキャッシュするように指定できます。

外部エンティティをキャッシュすると、リモート アクセス時間が節約されるだけでなく、ネットワークまたは管理サーバのダウンにより XML ドキュメントの解析中に管理サーバにアクセスできなくなった場合には、ローカル バックアップを利用できます。

キャッシュされたエンティティについて、WebLogic Server が URL または EAR のディレクトリからエンティティを再取得して再キャッシュする間隔 (有効期限) をコンフィグレーションできます。

エンタープライズ アプリケーション用の外部エンティティ キャッシュをコンフィグレーションするには、<entity-mapping> 要素の <when-to-cache> 下位要素と <cache-timeout-interval> 下位要素を使用します。以下に例を示します。

     <entity-mapping>
<entity-mapping-name>My Mapping</entity-mapping-name>
<public-id>-//BEA Systems, Inc.//DTD for cars//EN</public-id>
<system-id>http://www.bea.com/dtds/car.dtd</system-id>
<entity-uri>dtds/car.dtd</entity-uri>
<when-to-cache>cache-at-initialization</when-to-cache>
<cache-timeout-interval>300</cache-timeout-interval>
</entity-mapping>

この例では、car.dtd が EAR アーカイブまたは展開ディレクトリのメイン ディレクトリの下にある lib/xml/registry/dtds ディレクトリに格納されます。WebLogic Server の最初の起動時に DTD のコピーがメモリにキャッシュされ、以後は、キャッシュされたコピーが 300 秒以上格納されている場合にリフレッシュされます。


ページの先頭       前  次