Oracle Identity Managerでは、グローバルおよびスレッド・ローカルの2タイプのキャッシュを使用します。
グローバル・キャッシュは、情報をグローバルに格納します。システムのどこからでも、このキャッシュに格納された情報にアクセスできます。グローバル・キャッシュは、OpenSymphonyのOSCacheを使用します。OSCacheにはクラスタ環境をサポートする利点があります。通常、データベース問合せはグローバル・キャッシュに格納されるため、問合せを繰り返してもデータベースに対して再実行されません。
スレッド・ローカル・キャッシュは、単一のトランザクションで何度も使用する情報を格納します。たとえば、トランザクション中に何度も発行される問合せはスレッド・ローカル・キャッシュにあるデータを使用します。問合せに使用するデータは、トランザクションで変更されません。
Oracle Identity Managerでは、カテゴリ別にキャッシュを行います。特定のエンティティのキャッシュを有効化および無効化し、別々の有効期限を設定できます。
この章では、次の内容について説明します。
この項では、xlconfig.xmlファイルのCacheセクションにあるコード・ブロックのサンプルを例5-1に示します。コードには、xlconfig.xmlファイルで使用できる一般構成プロパティが含まれています。
例5-1 xlconfig.xmlファイルのCacheセクション
<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>
|
注意: 開発環境では、キャッシングを無効化することをお薦めします。開発環境では、データは頻繁に変更されます。キャッシュ・データが時間どおりにリフレッシュされないと、開発者による製品の作業に問題が生じます。 |
xlconfig.xmlファイルのCacheタグは、キャッシュ構成、および開始と終了のCacheタグ間の記述内容を表します。表5-1では、例5-1に記載されている一般キャッシュ構成プロパティについて説明します。
表5-1 キャッシュ構成プロパティ
| プロパティ | 説明 |
|---|---|
|
|
構成ファイルで明示的に定義されていないカテゴリに対するキャッシュ構成のコンポーネントを有効化します。構成ファイルに特定のカテゴリが含まれない場合、キャッシュはこのエントリを使用してカテゴリを有効化または無効化します。 |
|
|
スレッド・ローカル・キャッシュを有効化または無効化します。 |
|
|
キャッシュ構成のコンポーネントのデフォルト有効期限(秒)を指定します。 |
|
|
キャッシングで使用するプロバイダの完全クラスパスを指定します。このプロパティは変更しないでください。 |
|
|
キャッシュ・プロバイダ・プロパティを指定します。例5-1では、 |
|
|
キャッシュのサイズを指定します。この数字は、キャッシュが格納する項目の数を表します。このサイズに達すると、新しい項目がキャッシュに格納され、最も使用されていない項目がキャッシュの外に出されます。 |
|
|
すべてのOracle Identity Managerコンポーネント間のマルチキャスト通信で使用します。 |
|
注意: 1つの環境内のすべてのOracle Identity Managerインストール(クラスタのすべてのノードなど)に、同じMultiCast Addressを使用する必要があります。キャッシュ・フラッシュは、MultiCast IPを使用して、すべてのインストールに伝播されます。マルチキャストが無効な場合、キャッシュ・フラッシュはできません。 |
一般的なキャッシュ構成を実行すると、コンポーネントまたはカテゴリがそれぞれ独自のタグ名とともに表示されます。タグ名は、キャッシュに情報を格納するコードで使用するカテゴリ名を表します。すべてのカテゴリは、他のカテゴリと関係なく有効化または無効化し、コンポーネントまたはカテゴリ別に有効期限を設定できます。
表5-2にキャッシュ構成ファイルのカテゴリを示します。デフォルトでは、表5-2で特に記載のあるカテゴリ以外はすべてキャッシュ構成ファイルで無効化されています。
表5-2 カテゴリベースのキャッシュ構成パラメータ
| カテゴリ名 | 説明 |
|---|---|
|
|
データ・オブジェクトの変更が発生した場合に実行されるイベント・ハンドラの一覧。カスタム・イベント・ハンドラおよびエンティティ・アダプタは、ここでデータ・オブジェクトに追加されます。 |
|
|
プロセス属性、タスクおよびタスク・マッピングのプロセス定義情報。 |
|
|
ルール定義情報。 |
|
|
フォーム定義情報。 |
|
|
列コードのDB列名。デフォルトで有効です。 注意: このカテゴリはデフォルトで有効です。 |
|
|
ユーザー定義フォームおよび列定義。 |
|
|
オブジェクト定義情報。 |
|
|
APIをページング機能でコールするときに、格納された件数の合計に使用します。情報の変更が頻繁なため、このカテゴリのデフォルト有効期限は600秒です。 |
|
|
このカテゴリでは、フラッシュする必要がなく特定のカテゴリに当てはまらないデータを定義します。このカテゴリには、有効期限はありません。情報は、一般的に初期データベース・セットアップ中に移入され、インストール内では変更されません。 |
|
|
DBフィールド・メタデータ情報。 注意: このカテゴリはデフォルトで有効です。 |
|
|
アダプタ変数、コンパイル・ステータスなど。 |
|
|
キャッシュ組織名。 |
|
|
リコンシリエーション・ルール。 |
|
|
キャッシュ・システム・プロパティ。 |
|
|
参照名とフィールド間の変換をキャッシュします。 |
|
|
ユーザー・グループをキャッシュします。 |
|
|
所定の参照名の参照値をキャッシュします。 |
|
|
ITリソースのDBキー・キャッシュ。 |
|
|
システム・プロパティとともにどのデータを暗号化するかをキャッシュします。 |
|
|
共通問合せのデータベース・メタデータ情報。 |
|
|
カスタム・リソース・バンドルをキャッシュします。 |
|
|
カスタム・デフォルト・バンドルをキャッシュします。 |
|
|
コネクタ・リソース・バンドルをキャッシュします。 |
|
|
電子メール定義情報をキャッシュします。 |
|
|
データベース・ソート・パラメータをキャッシュします。 |
|
|
ユーザー・キーをキャッシュします。 |
|
|
特定の汎用テクノロジ・コネクタ・インスタンスに関連するデータをキャッシュします。 |
|
|
特定の汎用テクノロジ・コネクタ・インスタンスに関連付けられたプロバイダ・パラメータ値をキャッシュします。 |
クラスのリロードとは、サーバーを再起動せずに自動的にクラスをリロードすることです。クラスのリロードの設定は、スケジュール済タスクおよびアダプタ関連のファイルで役立ちます。パフォーマンスの向上のため、本番環境では、クラスのリロードを無効にすることをお薦めします。キャッシュのリロードが無効化されていると、新規アダプタのインポート、既存アダプタの変更またはJARファイルの変更が発生した場合、Oracle Identity Managerサーバーの再起動が必要になります。
クラス・リロードの構成情報は、xlconfig.xmlファイルに次のように含まれます。
<ClassLoading> <ReloadEnabled>true</ReloadEnabled> <ReloadInterval>15</ReloadInterval> <LoadingStyle>ParentFirst</LoadingStyle> </ClassLoading>
ReloadEnabled: trueに設定すると、クラス・リロードを定期的に有効化します。
ReloadInterval: リロードするタイミング(秒単位)を指定します。
LoadingStyle: ロードのタイプを指定します。
様々なロードのタイプを次に示します。
parentFirstモードでは、システム・クラスパス、Oracle Identity Managerアプリケーション・クラスパス、ADPクラスパス内のクラスの順に優先されます。これは推奨のオプションです。
parentLastモードでは、ADPクラスパス、システム・クラスパス、Oracle Identity Managerアプリケーション・クラスパス内のクラスの順に優先されます。これは非推奨のオプションで、ClassCastExceptionsが発生する原因となるため、使用しないでください。
|
注意: ADPクラスパスのJavaTasks、ScheduleTasks、EventHandlersおよびThirdPartyディレクトリは、OIM_HOMEディレクトリにあります。 |
割当て時間前にキャッシュを消去するには、OIM_HOME/binディレクトリ内のPurgeCacheユーティリティを使用します。このユーティリティで、キャッシュ内のすべての要素を消去できます。
PurgeCacheユーティリティを使用するには、Microsoft Windowsシステム上ではPurgeCache.bat category nameを、LinuxおよびUNIXシステム上ではPurgeCache.sh category nameを実行します。category name引数は、消去するカテゴリの名前を表します。たとえば、次のコマンドでは、すべてのFormDefinitionエントリをシステムおよびクラスタから消去します。
PurgeCache.bat FormDefinition PurgeCache.sh FormDefinition
すべてのOracle Identity Managerカテゴリを消去するには、PurgeCacheユーティリティにALLの値を渡します。
|
注意:
|
デプロイ後にキャッシュ構成を変更すると、パフォーマンスや使用方法に影響を与える場合があります。キャッシュを構成するときは、細心の注意を払う必要があります。
本番環境用のOracle Identity Managerキャッシュを構成するためのガイドラインを次に示します。
<StoredProcAPI>設定を除くすべてのプロパティをtrueに設定します。
<XLCacheProvider>のサイズを15000に増やします(デフォルト値は5000)。
例5-2に、本番環境におけるOracle Identity Managerキャッシュ構成ファイル(xlconfig.xml)の推奨値を示します。
例5-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 must not be flushed out. For example, key for requests organization. -->
<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>