3.3.16 事前解析の実行タイミングの設定

高速化定義ファイルを使用した高速パースでは,ユーザプログラムを変更しないため,次のどちらかのタイミングで事前解析用XML文書の解析を実行します。

事前解析の実行タイミング,および事前解析の実行タイミングの設定方法について説明します。

<この項の構成>
(1) 事前解析の実行タイミング
(2) 事前解析の実行タイミングの設定方法

(1) 事前解析の実行タイミング

高速化定義ファイルを使用して高速パース機能を使用する場合の,事前解析の実行タイミングについて説明します。

J2EEサーバまたはWebコンテナサーバの起動時
サーバの起動時に,高速化定義ファイルの記述内容に従って,事前解析用XML文書の解析を実行します。事前解析で生成された解析結果オブジェクトは,サーバが終了するまでメモリ上に保持されます。
高速パースの対象となる各XML文書の初回解析時
高速化定義ファイルに指定した高速パース機能の対象となるXML文書を初めて解析するタイミングで,事前解析用XML文書を解析します。このため,高速パースの対象となる各XML文書の初回解析時には,通常の解析時間に加え,解析結果オブジェクトを生成する時間が掛かります。高速パースの対象となるXML文書の2回目以降の解析では,初回に生成した解析結果オブジェクトを利用して高速パースを実現します。
なお,高速パースの対象となる一つのXML文書を複数のスレッドで解析する場合,すべてのスレッドの中で最初に実行された解析で,事前解析を開始します。この場合,事前解析が完了する前に開始された別のスレッドの解析には,高速パースが適用されません。

それぞれの事前解析の実行タイミングを次の図に示します。

図3-19 事前解析の実行タイミング

[図データ]

なお,高速化定義ファイルを使用する場合の事前解析時の外部エンティティ参照は,事前解析のタイミングに関係なく,デフォルトのエンティティリゾルバで解決されます。

(2) 事前解析の実行タイミングの設定方法

事前解析の実行タイミングは,J2EEサーバまたはWebコンテナサーバのユーザプロパティファイル(usrconf.properties)のシステムプロパティで設定します。

事前解析の実行タイミングを設定するためのシステムプロパティ,およびエラー発生時の動作について説明します。

(a) 事前解析の実行タイミングを設定するためのシステムプロパティ
システムプロパティ名
ejbserver.application.InitTermProcessClasses
  • com.cosminexus.jaxp.preparsedxml.PreparsedInitializerを含む
    J2EEサーバまたはWebコンテナサーバの起動時に事前解析を実行します。
  • com.cosminexus.jaxp.preparsedxml.PreparsedInitializerを含まない
    高速パースの対象となる各XML文書の初回解析時に事前解析を実行します。

なお,システムプロパティ「ejbserver.application.InitTermProcessClasses」の詳細は,マニュアル「Cosminexus リファレンス 定義編」を参照してください。

(b) エラー発生時の動作

事前解析中にエラーが発生した場合は,事前解析の実行タイミングによって次のように動作します。

J2EEサーバまたはWebコンテナサーバの起動時に事前解析を行う場合
標準エラー出力ストリームにエラーメッセージが出力されて,サーバの起動が中止されます。
高速パースの対象となる各XML文書の初回解析時に事前解析を行う場合
SAXException例外またはIOException例外が発生します。