この章の内容は以下のとおりです。
アプリケーション・スコープとは、WebLogic Serverの構成全体に対してではなく、特定のエンタープライズ・アプリケーションに対してリソースを構成することです。XMLの場合、このようなリソースとしては、パーサー、トランスフォーマ、外部エンティティ、xpath、スキーマ、xmlInput、xmlOutput、xmlEntityおよび外部エンティティのキャッシュ構成があります。アプリケーション・スコープの最大の利点は、特定のアプリケーションに対するリソースがそのアプリケーション専用になることです。アプリケーション・スコーピングによって、アプリケーションごとに異なるパーサーを構成したり、EAR
ファイルや展開されたエンタープライズ・ディレクトリ内のアプリケーション用にDTDを保管したりすることができます。
アプリケーション・スコーピングを使用するもう1つのメリットは、リソースをEARファイルと関連付けることにより、WebLogic Serverの別のインスタンスで、そのサーバーのリソースを構成せずにこのEARファイルを実行できることです。
特定のアプリケーション用のXMLリソースを構成するには、EAR
ファイルまたは展開されたエンタープライズ・アプリケーション・ディレクトリのMETA-INF
ディレクトリにあるweblogic-application.xml
デプロイメント記述子ファイルに情報を追加します。
注意:
WebLogic Serverインスタンス用のパーサー、トランスフォーマおよび外部エンティティ・リソースを構成するには、「WebLogic Server XMLの管理」で説明するように、WebLogic Server管理コンソールを使用します。
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> <xpath-factory> com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl </xpath-factory <schema-factory> com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory </schema-factory> <xml-input-factory> com.ctc.wstx.stax.WstxInputFactory </xml-input-factory> <xml-output-factory> com.ctc.wstx.stax.WstxOutputFactory </xml-output-factory> <xml-event-factory> com.ctc.wstx.stax.WstxEventFactory </xml-event-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>
要素の下位要素を説明します。この図の後の節は各要素を説明します。
このアプリケーションでSAXスタイル解析のために使用されるファクトリ・クラスを指定する要素。この要素が指定されていない場合、WebLogic Serverインスタンスに対して指定されたデフォルトSAXパーサー・ファクトリが使用されます。
このアプリケーションでDOMスタイル解析のために使用されるファクトリ・クラスを指定する要素。この要素が指定されていない場合、WebLogic Serverインスタンスに対して指定されたデフォルトDOMパーサー・ファクトリが使用されます。
このアプリケーションでjavax.xml.transform
パッケージによりドキュメントを変換する場合に使用されるファクトリ・クラスを指定する要素。この要素が指定されていない場合、WebLogic Serverインスタンスに対して指定されたデフォルトXSLTトランスフォーマ・ファクトリが使用されます。
WebLogic Serverにデプロイされているアプリケーションで、スキーマを使用するXMLドキュメントの検証に使用するSchema
オブジェクトを構成および取得できるようにする要素。この要素が指定されていない場合、WebLogic Serverインスタンスに対して指定されたデフォルト・スキーマ・ファクトリが使用されます。
WebLogic Serverにデプロイされているアプリケーションで、XML要素の検索に使用するXPath
オブジェクトを構成および取得できるよにする要素。この要素が指定されていない場合、WebLogic Serverインスタンスに対して指定されたデフォルトXPathファクトリが使用されます。
WebLogic Serverにデプロイされているアプリケーションで、XMLストリームの読取りに使用するXMLEventReader/XMLStreamReader
オブジェクトを構成および取得できるようにする要素。この要素が指定されていない場合、WebLogic Serverインスタンスに対して指定されたデフォルトXML入力ファクトリが使用されます。
WebLogic Serverにデプロイされているアプリケーションで、XMLストリームの書込みに使用するXMLEventWriter/XMLStreamWriter
オブジェクトを構成および取得できるようにする要素。この要素が指定されていない場合、WebLogic Serverインスタンスに対して指定されたデフォルトXML出力ファクトリが使用されます。
WebLogic Serverにデプロイされているアプリケーションで、XMLストリームの解析または構築に使用するXMLEvent
オブジェクトを構成および取得できるようにする要素。この要素が指定されていない場合、WebLogic Serverインスタンスに対して指定されたデフォルトXMLEventファクトリが使用されます。
エンティティの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
です。
XMLアプリケーションが、WebLogic Serverに構成されているデフォルト・パーサーまたはトランスフォーマとは異なるパーサーまたはトランスフォーマを使用するように指定できます。それには、XMLアプリケーションの入っているEARファイルまたは展開ディレクトリのweblogic-application.xml
を更新します。
エンタープライズ・アプリケーション用にデフォルト以外のパーサーまたはトランスフォーマを構成するには、以下の手順を実行します。
注意:
ファクトリ・タイプXPathFactory
、SchemaFactory
、XMLInputFactory
、XMLOutputFactory
およびXMLEventFactory
には、この後で説明するのと同じプロセスが適用されます。
<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アーカイブのメイン・ディレクトリを基準にした相対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秒以上格納されている場合にリフレッシュされます。