WebLogic 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 Server 独特のデプロイメント記述子です。このファイルには、エンタープライズ アプリケーションにより使用される XML、JDBC、EJB などのリソースに関するコンフィグレーション情報が入れられます。標準 J2EE デプロイメント記述子は、application.xml
と呼ばれます。
次のサンプル ファイル weblogic-application.xml
は、あるエンタープライズ アプリケーション用の XML リソースをコンフィグレーションする方法を示しています。各種要素の本文は太字で示します。
<weblogic-application>
...
<xml>
<parser-factory>
<saxparser-factory>
weblogic.xml.babel.jaxp.SAXParserFactoryImpl
</saxparser-factory>
<document-builder-factory>
org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
</document-builder-factory>
<transformer-factory>
org.apache.xalan.processor.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>
要素の下位要素を示し、その後の節で各要素について説明します。
図 3-1 weblogic-application.xml の <xml> 要素の下位要素
パーサ、トランスフォーマ、外部エンティティ、外部エンティティ キャッシュなど、エンタープライズ アプリケーション用 XML リソースをコンフィグレーションするためのメイン要素。
エンタープライズ アプリケーション用の特定のパーサまたはトランスフォーマを指定するための親要素。
このアプリケーションで SAX スタイル解析のために使用されるファクトリ クラスを指定する要素。この要素が指定されていない場合、WebLogic Server インスタンスに対して指定されたデフォルト SAX パーサ ファクトリが使用されます。
このアプリケーションで DOM スタイル解析のために使用されるファクトリ クラスを指定する要素。この要素が指定されていない場合、WebLogic Server インスタンスに対して指定されたデフォルト DOM パーサ ファクトリが使用されます。
このアプリケーションで javax.xml.transform
パッケージを使ってドキュメントを変換する際に使用されるファクトリ クラスを指定する要素。この要素が指定されていない場合、WebLogic Server インスタンスに対して指定されたデフォルト XSLT トランスフォーマ ファクトリが使用されます。
DTD やスキーマなど、XML ファイル内のエンティティ宣言をエンティティのローカル コピーにマッピングするための親要素。
-//BEA Systems, Inc.//DTD for cars//EN.
http://www.bea.com/dtds/car.dtd
エンティティの URI を指定する要素。このパスは、EAR アーカイブまたは展開ディレクトリのメイン ディレクトリを基準とする相対パスです。
たとえば、dtds/car.dtd
は、メイン EAR アーカイブ (META-INF
ディレクトリと同じレベル) に dtds
という名前のディレクトリがあり、そこに car.dtd
という名前のファイルがあることを示します。
外部エンティティをキャッシュする時期を指定する要素。有効な値は、次のとおりです。
cache-on-reference
- 最初にエンティティが XML ドキュメントで参照されたときに、URL で参照される外部エンティティがキャッシュされます。cache-at-initialization
- サーバ起動時に外部エンティティがキャッシュされます。cache-never
- 外部エンティティはキャッシュされません。デフォルト値は cache-on-reference
です。
キャッシュされた外部エンティティが古くなる (期限切れになる) までの秒数を指定する要素。キャッシュされたコピーがこの期間を超えた場合、WebLogic Server は、EAR アーカイブまたは展開ディレクトリのメイン ディレクトリを基準に指定された相対 URL またはパス名から外部エンティティを再取得します。
XML アプリケーションで、WebLogic Server にコンフィグレーションされた組み込みパーサまたはトランスフォーマとは異なるパーサまたはトランスフォーマを使用するように指定できます。それには、XML アプリケーションの入っている EAR ファイルまたは展開ディレクトリの weblogic-application.xml
を更新します。
エンタープライズ アプリケーション用に組み込み以外のパーサまたはトランスフォーマをコンフィグレーションするには、以下の手順を実行します。
<parser-factory>
<saxparser-factory>weblogic.xml.babel.jaxp.SAXParserFactoryImpl
</saxparser-factory>
<document-builder-factory>
org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
</document-builder-factory>
<transformer-factory>
org.apache.xalan.processor.TransformerFactoryImpl
</transformer-factory>
</parser-factory>
DTD などの外部エンティティは、Web から取得するだけでなく、そのローカル コピーを EAR アーカイブまたは展開ディレクトリに格納しておくこともできます。
エンタープライズ アプリケーション用の外部エンティティをコンフィグレーションするには、以下の手順を実行します。
<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>
注意 : エンティティのローカル コピーをマップする各エンティティ宣言について、<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 秒以上格納されている場合にリフレッシュされます。