Oracle® Fusion Middleware Oracle WebLogic Server XML プログラマーズ ガイド 11g リリース 1 (10.3.1) B55533-01 |
|
戻る |
次へ |
以下の節では、特定のアプリケーションのためにパーサ、トランスフォーマ、外部エンティティ、外部エンティティ キャッシュをコンフィグレーションする方法について説明します。
アプリケーション スコープとは、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 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>
です。図 8-1 は、<xml>
要素の下位要素を説明します。この図の後の節は各要素を説明します。
パーサ、トランスフォーマ、外部エンティティ、外部エンティティ キャッシュなど、エンタープライズ アプリケーション用 XML リソースをコンフィグレーションするためのメイン要素。
エンタープライズ アプリケーション用の特定のパーサまたはトランスフォーマを指定するための親要素。
このアプリケーションで SAX スタイル解析のために使用されるファクトリ クラスを指定する要素。この要素が指定されていない場合、WebLogic Server インスタンスに対して指定されたデフォルト SAX パーサ ファクトリが使用されます。
このアプリケーションで DOM スタイル解析のために使用されるファクトリ クラスを指定する要素。この要素が指定されていない場合、WebLogic Server インスタンスに対して指定されたデフォルト DOM パーサ ファクトリが使用されます。
このアプリケーションで javax.xml.transform
パッケージによりドキュメントを変換する場合に使用されるファクトリ クラスを指定する要素。この要素が指定されていない場合、WebLogic Server インスタンスに対して指定されたデフォルト XSLT トランスフォーマ ファクトリが使用されます。
DTD やスキーマなど、XML ファイル内のエンティティ宣言をエンティティのローカル コピーにマッピングするための親要素。
エンティティ マッピング宣言の名前を指定する要素。
次のようなエンティティのパブリック ID を指定する要素。
-//BEA Systems, Inc.//DTD for cars//EN.
次のようなエンティティのシステム ID を指定する要素。
http://www.bea.com/dtds/car.dtd
エンティティの URI を指定する要素。このパスは、EAR アーカイブまたは展開ディレクトリのメイン ディレクトリを基準とする相対パスです。
たとえば、dtds/car.dtd
は、メイン EAR アーカイブ (META-INF
ディレクトリと同じレベル) に dtds
というディレクトリがあり、そこに car.dtd
というファイルがあることを示します。
外部エンティティをキャッシュする時期を指定する要素。有効な値は以下のとおり。
cache-on-reference
- WebLogic Server は、最初にエンティティが XML ドキュメントで参照されたときに、URL で参照される外部エンティティをキャッシュします。
cache-at-initialization
- WebLogic Server は、サーバ起動時にエンティティをキャッシュします。
cache-never
- WebLogic Server は、外部エンティティをキャッシュしません。
デフォルト値は cache-on-reference
です。
キャッシュされた外部エンティティが古くなる (期限切れになる) までの秒数を指定する要素。キャッシュされたコピーがこの期間を超えた場合、WebLogic Server は、EAR アーカイブまたは展開ディレクトリのメイン ディレクトリを基準に指定された相対 URL またはパス名から外部エンティティを再取得します。
このフィールドのデフォルト値は、120 秒です。
XML アプリケーションが、WebLogic Server にコンフィグレーションされているデフォルト パーサまたはトランスフォーマとは異なるパーサまたはトランスフォーマを使用するように指定できます。それには、XML アプリケーションの入っている EAR ファイルまたは展開ディレクトリの weblogic-application.xml
を更新します。
エンタープライズ アプリケーション用にデフォルト以外のパーサまたはトランスフォーマをコンフィグレーションするには、以下の手順を実行します。
<xml>
要素の <parser-factory>
下位要素を使用し、エンタープライズ アプリケーションのために、SAX および DOM スタイル解析用と XSLT 変換用のファクトリ クラスをコンフィグレーションします。次に例を示します。
<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
クラスが使用されます。
パーサ クラスまたはトランスフォーマ クラスを EAR アーカイブに対してローカルにするには、そのクラスの入っている JAR ファイルを EAR ファイルの任意の場所に置き、META-INF/MANIFEST.MF
ファイル内の Class-Path
変数を更新します。
たとえば、ディレクトリ 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
パーサ クラスまたはトランスフォーマ クラスを EAR アーカイブ以外の場所に格納する場合は、クラスの入っている JAR ファイルの完全パス名を含むように WebLogic Server CLASSPATH 変数を必ず更新してください。
DTD などの外部エンティティは、Web から取得するだけでなく、そのローカル コピーを EAR アーカイブまたは展開ディレクトリに格納しておくこともできます。
エンタープライズ アプリケーション用の外部エンティティをコンフィグレーションするには、以下の手順を実行します。
EAR アーカイブのメイン ディレクトリの下にディレクトリ lib/xml/registry
を作成します。
DTD のような外部エンティティをそのディレクトリにコピーします。
weblogic-application.xml
ファイルを更新し、<xml>
要素の <entity-mapping>
下位要素を使用して、アプリケーションで処理される XML ファイルのエンティティ宣言にエンティティの名前をマップします。以下に例を示します。
<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 秒以上格納されている場合にリフレッシュされます。