Oracle Identity Managerでは、グローバルおよびスレッド・ローカルの2タイプのキャッシュを使用します。
グローバル・キャッシュは、情報をグローバルに格納します。システムのどこからでも、このキャッシュに格納された情報にアクセスできます。グローバル・キャッシュは、OpenSymphonyのOSCacheを使用します。OSCacheはクラスタ環境をサポートする利点があります。通常、データベース問合せはグローバル・キャッシュに格納されるため、問合せを繰り返してもデータベースに対して再実行されません。
スレッド・ローカル・キャッシュは、何度も使用する情報を単一のトランザクションに格納します。たとえば、トランザクション中に何度も発行される問合せはスレッド・ローカル・キャッシュにあるデータを使用します。問合せに使用するデータは、トランザクションで変更されません。
Oracle Identity Managerでは、カテゴリ別にキャッシュを行います。特定のエンティティのキャッシュを有効化および無効化し、別々の有効期限を設定できます。
この章では、次の内容について説明します。
例4-1に、xlconfig.xmlファイル内のCacheセクションのSnippetを示します。
例4-1 xlconfig.xml Snippet
<Cache>
<Enable>false</Enable>
<ThreadLocalCacheEnabled>false</ThreadLocalCacheEnabled>
<ExpireTime>14400</ExpireTime>
<CacheProvider>com.thortech.xl.cache.OSCacheProvider</CacheProvider>
<XLCacheProvider>
<Size>5000</Size>
<MultiCastAddress>231.121.212.133</MultiCastAddress>
</XLCacheProvider>
<!-- Individual cache categories -->
<!-- Adapters and event handlers to be executed on update/insert/delete -->
<DataObjectEventHandlers>
<Enable>false</Enable>
<ExpireTime>14400</ExpireTime>
</DataObjectEventHandlers>
...
...
...
</Cache>
|
注意: 開発環境では、キャッシングを無効化することをお薦めします。開発環境では、データは頻繁に変更されます。キャッシュ・データが時間どおりにリフレッシュされないと、開発者による製品の作業に問題が生じます。 |
Cacheタグは、キャッシュ構成、および開始と終了のCacheタグ間の記述内容を表します。表4-1にCacheセクションのエントリを示します。
表4-1 キャッシュ構成パラメータ
| プロパティ | 説明 |
|---|---|
|
|
構成ファイルで明示的に定義されていないカテゴリに対するキャッシュ構成のコンポーネントを有効化します。構成ファイルに特定のカテゴリが含まれない場合、キャッシュはこのエントリを使用してカテゴリを有効化または無効化します。 |
|
|
スレッド・ローカル・キャッシュを有効化または無効化します。 |
|
|
キャッシュ構成のコンポーネントのデフォルト有効期限を指定します。 |
|
|
キャッシングで使用するプロバイダの完全クラスパスを指定します。このプロパティは変更しないでください。 |
|
|
キャッシュ・プロバイダ・プロパティを指定します。例4-1では、 |
|
|
キャッシュのサイズを指定します。数字は、キャッシュが格納する項目の数を表します。このサイズに達すると、新しい項目がキャッシュに格納され、最も使用されていない項目がキャッシュの外に出されます。 |
|
|
すべてのOracle Identity Managerコンポーネント間のマルチキャスト通信で使用します。 |
|
注意: 1つの環境内のすべてのOracle Identity Managerインストール(クラスタのすべてのノードなど)に、同じMultiCast Addressを使用する必要があります。キャッシュ・フラッシュは、MultiCast IPを使用して、すべてのインストールに伝播します。マルチキャストが無効な場合、キャッシュ・フラッシュはできません。 |
一般的なキャッシュ構成を実行すると、コンポーネントまたはカテゴリがそれぞれ独自のタグ名とともに表示されます。タグ名は、キャッシュに情報を格納するコードで使用するカテゴリ名を表します。すべてのカテゴリは、他のカテゴリと関係なく有効化または無効化し、コンポーネントまたはカテゴリ別に有効期限を設定できます。
表4-2にCache構成ファイルのカテゴリを示します。デフォルトでは、表4-2で特に記載のあるカテゴリ以外はすべてキャッシュ構成ファイルで無効化されています。
表4-2 カテゴリベースのキャッシュ構成パラメータ
| カテゴリ名 | 説明 |
|---|---|
|
|
データ・オブジェクトの変更が発生した場合に実行されるイベント・ハンドラの一覧。カスタム・イベント・ハンドラおよびエンティティ・アダプタは、ここでデータ・オブジェクトに追加されます。 |
|
|
プロセス属性、タスク、タスク・マッピングなどのプロセス定義情報。 |
|
|
ルール定義情報。 |
|
|
フォーム定義情報。 |
|
|
列コードのDB列名。デフォルトで有効です。 |
|
|
ユーザー定義フォームおよび列定義。 |
|
|
オブジェクト定義情報。 |
|
|
APIをページング機能でコールする時に、格納された件数の合計で使用します。情報の変更が頻繁なため、このカテゴリのデフォルト有効期限は10分です。 |
|
|
このカテゴリでは、フラッシュする必要がなく特定のカテゴリに当てはまらないデータを定義します。このカテゴリには、有効期限はありません。情報は、一般的に初期データベース・セットアップ中に移入され、インストール内では変更されません。 |
|
|
DBフィールド・メタデータ情報。デフォルトで有効です。 |
|
|
アダプタ変数、コンパイル・ステータスなど。 |
|
|
キャッシュ組織名。 |
|
|
リコンシリエーション・ルール。 |
|
|
キャッシュ・システム・プロパティ。 |
|
|
参照名とフィールド間の変換をキャッシュします。 |
|
|
ユーザー・グループをキャッシュします。 |
|
|
所定の参照名の参照値をキャッシュします。 |
|
|
ITリソースのDBキー・キャッシュ。 |
|
|
システム・プロパティとともにどのデータを暗号化するかをキャッシュします。 |
|
|
共通問合せのデータベース・メタデータ情報。 |
|
|
カスタム・リソース・バンドルをキャッシュします。 |
|
|
カスタム・デフォルト・バンドルをキャッシュします。 |
|
|
コネクタ・リソース・バンドルをキャッシュします。 |
|
|
電子メール定義情報をキャッシュします。 |
|
|
データベース・ソート・パラメータをキャッシュします。 |
|
|
ユーザー・キーをキャッシュします。 |
|
|
特定の汎用テクノロジ・コネクタ・インスタンスに関連するデータをキャッシュします。 |
|
|
特定の汎用テクノロジ・コネクタ・インスタンスに関連付けられたプロバイダ・パラメータ値をキャッシュします。 |
クラスのリロードとは、サーバーを再起動することなく、自動的にクラスをリロードすることを指します。クラスのリロード設定は、スケジュール済タスクやアダプタ関連ファイルで役に立ちます。開発環境では、リロードを有効化することをお薦めします。キャッシュのリロードが無効な時に、新規アダプタのインポート、既存アダプタの変更または.jarファイルの変更が発生した場合、Oracle Identity Managerサーバーの再起動が必要になります。
|
注意: 本番環境では、パフォーマンス向上のため、クラスのリロードを無効化することをお薦めします。 |
クラス・リロードの構成情報は、xlconfig.xmlファイルに次のように含まれます。
<ClassLoading> <ReloadEnabled>true</ReloadEnabled> <ReloadInterval>15</ReloadInterval> <LoadingStyle>ParentFirst</LoadingStyle> </ClassLoading>
ReloadEnabled: クラス・リロードを定期的に有効化します。
ReloadInterval: リロードするタイミング(秒単位)を指定します。
LoadingStyle: ロードのタイプを指定します。
ロードのタイプを次に示します。
ParentFirst: ADPClassLoaderクラスパスにあるJARファイルからクラスをロードする前に、親内のクラスを検索します。
ParentLast: 親からのクラスをオーバーライドします。ParentLastを使用すると、ClassCastExceptionsが発生する場合があります。
ParentLoader: ThreadContextクラス・ローダーです。
割当て時間前にキャッシュを消去するには、XL_HOME/binディレクトリ内のPurgeCacheユーティリティを使用します。このユーティリティで、キャッシュ内のすべての要素を消去できます。
プラットフォームに応じて、PurgeCacheユーティリティはバッチ・ファイルまたはシェル・スクリプトです。XEL_HOMEおよびJAVA_HOME環境変数が正しい場所を示すように編集すると、PurgeCacheをコマンドラインから実行できます。
PurgeCacheユーティリティを使用するには、Windowsシステム上では「PurgeCache.bat <カテゴリ名>」を、UNIX/Linuxシステム上では「PurgeCache.sh <カテゴリ名>」を実行します。カテゴリ名引数は、消去するカテゴリの名前を表します。たとえば、次のコマンドで、すべてのFormDefinitionエントリをシステムおよびクラスタから消去します。
PurgeCache.bat FormDefinition PurgeCache.sh FormDefinition
すべてのOracle Identity Managerカテゴリを消去するためには、PurgeCacheユーティリティにALLの値を渡します。
|
注意:
|
デプロイ後にキャッシュ構成を変更すると、パフォーマンスや使用方法に影響を与える場合があります。キャッシュを構成するときは、細心の注意を払う必要があります。
本番環境用のOracle Identity Managerキャッシュを構成するためのガイドラインを次に示します。
<StoredProcAPI>設定を除くすべてのプロパティをtrueに設定します。
<XLCacheProvider>のサイズを15000に増やします(デフォルト値は5000)。
例4-2に、本番環境におけるOracle Identity Managerキャッシュ構成ファイル(xlconfig.xml)の推奨値を示します。
例4-2 本番環境用のxlconfig.xmlに推奨されるキャッシュ値
<Cache>
<Enable>true</Enable>
<ThreadLocalCacheEnabled>true</ThreadLocalCacheEnabled>
<ExpireTime>14400</ExpireTime>
<CacheProvider>com.thortech.xl.cache.OSCacheProvider</CacheProvider>
<XLCacheProvider>
<Size>15000</Size>
<MultiCastAddress>231.172.169.176</MultiCastAddress>
</XLCacheProvider>
<!-- Individual cache categories -->
<!-- Adapters and event handlers to be executed on update/insert/delete -->
<DataObjectEventHandlers>
<Enable>true</Enable>
<ExpireTime>14400</ExpireTime>
</DataObjectEventHandlers>
<ProcessDefinition>
<Enable>true</Enable>
<ExpireTime>14400</ExpireTime>
</ProcessDefinition>
<RuleDefinition>
<Enable>true</Enable>
<ExpireTime>14400</ExpireTime>
</RuleDefinition>
<FormDefinition>
<Enable>true</Enable>
<ExpireTime>14400</ExpireTime>
</FormDefinition>
<ColumnMap>
<Enable>true</Enable>
<ExpireTime>14400</ExpireTime>
</ColumnMap>
<UserDefinedColumns>
<Enable>true</Enable>
<ExpireTime>14400</ExpireTime>
</UserDefinedColumns>
<ObjectDefinition>
<Enable>true</Enable>
<ExpireTime>14400</ExpireTime>
</ObjectDefinition>
<StoredProcAPI>
<Enable>false</Enable>
<ExpireTime>600</ExpireTime>
</StoredProcAPI>
<!-- This information never needs to flushed out. For example, key for requests organization and so on. -->
<NoNeedToFlush>
<Enable>true</Enable>
<ExpireTime>-1</ExpireTime>
</NoNeedToFlush>
<!-- Metadata Information -->
<MetaData>
<Enable>true</Enable>
<ExpireTime>14400</ExpireTime>
</MetaData>
<!-- Adapter Mapping Information -->
<AdapterInformation>
<Enable>true</Enable>
<ExpireTime>14400</ExpireTime>
</AdapterInformation>
<!-- Name of the organization for a given key and vice versa -->
<OrgnizationName>
<Enable>true</Enable>
<ExpireTime>14400</ExpireTime>
</OrgnizationName>
<!-- Reconciliation rules -->
<Reconciliation>
<Enable>true</Enable>
<ExpireTime>14400</ExpireTime>
</Reconciliation>
<!-- System Properties -->
<SystemProperties>
<Enable>true</Enable>
<ExpireTime>14400</ExpireTime>
</SystemProperties>
<LookupDefinition>
<Enable>true</Enable>
<ExpireTime>14400</ExpireTime>
</LookupDefinition>
<UserGroups>
<Enable>true</Enable>
<ExpireTime>14400</ExpireTime>
</UserGroups>
<LookupValues>
<Enable>true</Enable>
<ExpireTime>14400</ExpireTime>
</LookupValues>
<ITResourceKey>
<Enable>true</Enable>
<ExpireTime>14400</ExpireTime>
</ITResourceKey>
<RecordExists>
<Enable>true</Enable>
<ExpireTime>14400</ExpireTime>
</RecordExists>
<ServerProperties>
<Enable>true</Enable>
<ExpireTime>14400</ExpireTime>
</ServerProperties>
<!-- Column Meta Data -->
<ColumnMetaData>
<Enable>true</Enable>
<ExpireTime>14400</ExpireTime>
</ColumnMetaData>
<CustomResourceBundle>
<Enable>true</Enable>
<ExpireTime>-1</ExpireTime>
</CustomResourceBundle>
<CustomDefaultBundle>
<Enable>true</Enable>
<ExpireTime>-1</ExpireTime>
</CustomDefaultBundle>
<ConnectorResourceBundle>
<Enable>true</Enable>
<ExpireTime>-1</ExpireTime>
</ConnectorResourceBundle>
<LinguisticSort>
<Enable>true</Enable>
<ExpireTime>-1</ExpireTime>
</LinguisticSort>
<GenericConnector>
<Enable>true</Enable>
<ExpireTime>-1</ExpireTime>
</GenericConnector>
<GenericConnectorProviders>
<Enable>true</Enable>
<ExpireTime>-1</ExpireTime>
</GenericConnectorProviders>
</Cache>