3.3.3 スキーマキャッシュの構築
スキーマキャッシュ機能を使用するためには,あらかじめキャッシュ対象となるスキーマ文書を決めて,スキーマキャッシュを構築する必要があります。そのため,次のプロパティファイルを適切に設定してください。
-
スキーマ定義ファイル
-
J2EEサーバのユーザ定義ファイル(usrconf.properties)
上記のファイルはJavaのプロパティファイルに相当するため,基本的な構文規則はJavaのプロパティファイルの規則に従ってください。なお,プロパティファイルの構文規則の詳細については,java.util.PropertiesクラスのJavadocを参照してください。
プロパティファイルの詳細について説明します。
- 〈この項の構成〉
(1) スキーマ定義ファイル
スキーマ定義ファイルには,次の項目を定義できます。
-
キャッシュ対象となるスキーマ文書
-
キャッシュの形式
-
スキーマキャッシュを格納するディスク上の場所
スキーマ定義ファイルのファイル名,および格納場所は任意です。
キャッシュの対象となるのは,次のスキーマ文書です。
-
スキーマ定義ファイルに直接指定されたスキーマ文書
-
スキーマ定義ファイルで直接指定されたスキーマ文書から,次の要素によって直接または間接的に参照されるスキーマ文書
-
import要素
-
include要素
-
redefine要素
-
スキーマ定義ファイルに記述できるプロパティを次に示します。次に示す以外のプロパティを指定した場合,無視されます。
項番 |
プロパティ名 |
指定値 |
---|---|---|
1 |
schema_path |
スキーマ文書が存在するディレクトリを示す絶対パスを指定します。 |
2 |
diskcache_path |
ディスクキャッシュを格納するディレクトリを示す絶対パスを指定します。 |
3 |
schema_xxx ("xxx"の部分は1文字以上の任意の文字列) |
キャッシュ対象となるスキーマ文書のファイルを示す相対パス,およびディスクキャッシュ指定子を指定します。ディスクキャッシュ指定子は省略できます。 ディスクキャッシュ指定子は,スキーマ文書の相対パスの末尾に",D"と記述してください。ディスクキャッシュ指定子が記述されたスキーマ文書のキャッシュは,ディスク上に作成されます。 ディスクキャッシュ指定子の記述がない場合,キャッシュはメモリ上に作成されます。 ファイル名とディスクキャッシュ指定子の間の連続する空白およびタブは無視されます。 |
それぞれのプロパティで指定するパスの区切り記号は,Windowsの場合もUNIXの場合もスラッシュ(/)です。ディレクトリ名の絶対パスの末尾のスラッシュ(/)は任意です。
同じプロパティ名が2回以上指定された場合,最後に指定されたプロパティの指定値が有効となります。
スキーマ定義ファイルの記述例を次に示します。
- Windowsの場合
shema_path=C:/usr/app/xmlparser/schemafiles diskcache_path=C:/usr/app/xmlparser schema_01=schema/type1.xsd schema_02=schema/type2.xsd,D
- UNIXの場合
shema_path=/usr/app/xmlparser/schemafiles diskcache_path=/usr/app/xmlparser schema_01=schema/type1.xsd schema_02=schema/type2.xsd,D
"schema_01=schema/type1.xsd"と指定した場合,ディスクキャッシュ指定子が記述されていないため,スキーマ文書のキャッシュはメモリ上にキャッシュされます。
"schema_02=schema/type2.xsd,D"と指定した場合,ディスクキャッシュ指定子が記述されているめ,スキーマ文書のキャッシュはディスク上にキャッシュされます。
スキーマ定義ファイル指定時の動作を次に示します。
-
schema_pathプロパティ,およびdiskcache_pathプロパティは,必ず指定してください。
これらのプロパティのどちらか一方でも指定していない場合,必要なプロパティ指定が欠けているという警告メッセージ(KECX09503-W)がエラーファイルに出力され,スキーマキャッシュを使用しないでスキーマ検証を実施します。
-
複数のJ2EEサーバでdiskcache_pathプロパティに同じディレクトリが指定されている場合でも,ディスクキャッシュはサーバごとに独立して管理されます。
diskcache_pathプロパティで指定されたディレクトリの下にJ2EEサーバ名と同じ名前のディレクトリが作成され,その下にキャッシュファイルが作成されます。ディスクキャッシュが削除される場合は,作成されたサブディレクトリごとにキャッシュファイルが削除されます。
-
diskcache_pathプロパティの設定値が絶対パスでない場合,エラーファイルに警告メッセージ(KECX09507-W)が出力され,スキーマキャッシュを使用しないでスキーマ検証を実施します。
-
diskcache_pathプロパティに設定されたディレクトリにアクセスできない場合,ディスクキャッシュ格納用のディレクトリにアクセスできないという警告メッセージ(KECX09505-W)がエラーファイルに出力され,スキーマキャッシュを使用しないでスキーマ検証を実施します。
-
schema_pathプロパティの設定値が絶対パスでない場合,エラーファイルに警告メッセージ(KECX09508-W)が出力され,スキーマキャッシュを使用しないでスキーマ検証を実施します。
-
schema_xxxプロパティの設定値が相対パスでない場合,エラーファイルに警告メッセージ(KECX09509-W)が出力され,そのschema_xxxプロパティの指定は無効となります。
-
ディスクキャッシュ作成時にgrammarオブジェクトのファイルへの書き込みが失敗した場合,エラーファイルに警告メッセージ(KECX09511-W)を出力します。パーサは,書き込みに失敗したキャッシュではなく,スキーマ文書を使用してスキーマ検証を実施します。
-
複数の異なるschema_xxxプロパティに同じスキーマ文書が指定された場合,スキーマ文書に対応するキャッシュが1つだけ作成されます。このとき,これらのプロパティのうち,どれかのプロパティにディスクキャッシュ指定子が指定されていれば,キャッシュはディスク上に作成されます。どのプロパティにもディスクキャッシュ指定子が指定されていない場合,キャッシュはメモリ上に作成されます。
スキーマ定義ファイルに関する注意事項については,「6.18.3 スキーマ定義ファイルに関する注意事項」を参照してください。
(2) J2EEサーバのユーザ定義ファイル
J2EEサーバのユーザ定義ファイル(usrconf.properties)は,J2EEサーバ起動時に初期化するクラスや,設定するシステムプロパティを定義するファイルです。
J2EEサーバのユーザ定義ファイルの詳細についてはマニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「2. J2EEサーバで使用するファイル」を参照してください。
スキーマキャッシュ機能を使用する場合に,J2EEサーバのユーザ定義ファイルに記述するプロパティを次に示します。
項番 |
プロパティ名 |
指定値 |
---|---|---|
1 |
ejbserver.application.InitTermProcessClasses |
J2EE拡張コンテナの初期化・終了クラスを指定します。 スキーマキャッシュ機能では,スキーマキャッシュの構築に必要な"com.cosminexus.jaxp.impl.parsers.util.XMLGrammarCaching"を指定してください。 |
2 |
com.cosminexus.jaxp.grammar_caching.preload |
スキーマキャッシュ機能を使用するかどうかを指定します。"ON"または"OFF"を指定できます。デフォルトは"OFF"です。 "ON"を設定すると,スキーマキャッシュ機能を使用できます。XMLパーサはスキーマキャッシュを使用してスキーマ検証を実施します。 "OFF"を設定すると,スキーマキャッシュ機能を使用しません。XMLパーサはスキーマキャッシュを使用しないでスキーマ検証を実施します。 なお,このプロパティは,スキーマキャッシュ機能全体を制御するプロパティです。J2EEサーバがスキーマキャッシュ機能を利用する場合,必ず"ON"を指定してください。"OFF"を指定した場合,J2EEサーバ起動後にスキーマキャッシュ機能を有効にすることはできません。 |
3 |
com.cosminexus.jaxp.grammar_caching.config |
スキーマ定義ファイルの絶対パスを指定します。 |
スキーマキャッシュ機能は,次のすべての条件に該当する場合だけ,使用できます。
-
ejbserver.application.InitTermProcessClassesプロパティを指定。
-
com.cosminexus.jaxp.grammar_caching.preloadプロパティに"ON"を指定。
-
com.cosminexus.jaxp.grammar_caching.configプロパティを指定。
J2EEサーバのユーザ定義ファイルの記述例を次に示します。
# Application Server起動時に初期化するクラスを指定 ejbserver.application.InitTermProcessClasses=com.cosminexus.jaxp.impl.parsers.util.XMLGrammarCaching # キャッシュ機能を使用可能にする com.cosminexus.jaxp.grammar_caching.preload=ON # キャッシュに保持するスキーマ文書を定義した「スキーマ定義ファイル」の絶対パス名 com.cosminexus.jaxp.grammar_caching.config=C:/usr/app/xmlparser/config.properties
J2EEサーバのユーザ定義ファイル指定時の動作を次に示します。
-
com.cosminexus.jaxp.grammar_caching.preloadプロパティの指定値が次の場合,"OFF"が設定されたものとします。
-
"ON"または"OFF"以外の値が設定されている
-
プロパティが設定されていない
-
-
com.cosminexus.jaxp.grammar_caching.preloadプロパティに"ON"が指定されていても,com.cosminexus.jaxp.grammar_caching.configプロパティで指定されたスキーマ定義ファイルにアクセスできない場合,スキーマキャッシュ機能は使用できません(警告メッセージKECX09504-W)。