Oracle® Fusion Middleware Oracle WebLogic Server XMLアプリケーションの開発 12c (12.1.2) E48050-01 |
|
![]() 前 |
![]() 次 |
この章では、アプリケーション・スコーピングについて、また特定のアプリケーションのためにパーサー、トランスフォーマ、外部エンティティ、外部エンティティ・キャッシュを構成する方法について説明します。
この章の内容は以下のとおりです。
アプリケーション・スコープとは、WebLogic Serverの構成全体に対してではなく、特定のエンタープライズ・アプリケーションに対してリソースを構成することです。XMLの場合、このようなリソースとしては、パーサー、トランスフォーマ、外部エンティティ、および外部エンティティのキャッシュ構成があります。アプリケーション・スコープの最大の利点は、特定のアプリケーションに対するリソースがそのアプリケーション専用になることです。アプリケーション・スコーピングによって、アプリケーションごとに異なるパーサーを構成したり、EAR
ファイルや展開されたエンタープライズ・ディレクトリ内のアプリケーション用にDTDを保管したりすることができます。
アプリケーション・スコーピングを使用するもう1つのメリットは、リソースをEARファイルと関連付けることにより、WebLogic Serverの別のインスタンスで、そのサーバーのリソースを構成せずにこのEARファイルを実行できることです。
特定のアプリケーション用のXMLリソースを構成するには、EAR
ファイルまたは展開されたエンタープライズ・アプリケーション・ディレクトリのMETA-INF
ディレクトリにあるweblogic-application.xml
デプロイメント記述子ファイルに情報を追加します。
注意: WebLogic Serverインスタンス用のパーサー、トランスフォーマ、および外部エンティティ・リソースを構成するには、第9章「WebLogic Server XMLの管理」で説明するように、管理コンソールを使用します。 |
weblogic-application.xml
ファイルは、エンタープライズ・アプリケーション用のWebLogic Server固有のデプロイメント記述子です。このファイルには、エンタープライズ・アプリケーションにより使用されるXML、JDBC、EJBなどのリソースに関する構成情報が入れられます。標準Java EEデプロイメント記述子は、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
ファイルに置き換えられます。
注意: エンティティのローカル・コピーをマップする各エンティティ宣言について、 |
サーバー起動時、またはエンティティの最初の参照時のいずれかに、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秒以上格納されている場合にリフレッシュされます。