9.10.3 Entity Beanの実行時プロパティの設定
アプリケーションを構成する個々のEntity Beanに対して,アプリケーション実行時のプロパティを設定します。
(1) 編集する属性ファイル
Entity Bean属性ファイル
(2) 編集する属性ファイルの取得と属性の設定
-
属性ファイルの取得
次に示すコマンドを実行してEntity Bean属性ファイルを取得します。
- 実行形式
cjgetappprop [<サーバ名称>] [-nameserver <プロバイダURL>] -name <J2EEアプリケーション名> -type ejb -resname <EJB-JAR表示名>/<Entity Bean表示名> -c <Entity Bean属性ファイルパス>
- 実行例
cjgetappprop MyServer -name account -type ejb -resname account/MyAccount -c C:\home\MyAccount.xml
-
属性の設定
次に示すコマンドを実行して,Entity Bean属性ファイルの値を反映します。
- 実行形式
cjsetappprop [<サーバ名称>] [-nameserver <プロバイダURL>] -name <J2EEアプリケーション名> -type ejb -resname <EJB-JAR表示名>/<Entity Bean表示名> -c <Entity属性ファイルパス>
- 実行例
cjsetappprop MyServer -name account -type ejb -resname account/MyAccount -c C:\home\MyAccount.xml
(3) 編集する属性設定項目
Entity Beanの実行時属性(<runtime>)のプロパティ設定項目を,次に示します。
項目 |
必須 |
対応するタグ名 |
---|---|---|
Enterprise Beanのルックアップ名※1 |
○ |
<lookup-name> |
リモートインタフェースを持つEnterprise Bean名の別名※1 |
△ |
<optional-name> |
ローカルインタフェースを持つEnterprise Bean名の別名※1 |
△ |
<local-optional-name> |
セッション最大数※2 |
△ |
<maximum-instances> |
参照渡しの設定※3 |
△ |
<pass-by-reference> |
プール内のインスタンスの最大値 |
○ |
<pooled-instance> - <maximum> |
プール内のインスタンスの最小値 |
○ |
<pooled-instance> - <minimum> |
データのキャッシュ方法 |
○ |
<caching-model> |
EJBオブジェクトの存在期限 |
△ |
<entity-timeout> |
プロパティの設定項目については,マニュアル「アプリケーションサーバ リファレンス 定義編(アプリケーション/リソース定義)」の「3.5.1 Entity Bean属性ファイルの指定内容」を参照してください。
プロパティ項目の設定と動作について,次に説明します。
- プール内のインスタンスの最大値
-
メモリ上でプーリングされるEntity Beanには,次の二つの状態があります。
-
ready状態
ready状態のEntity Beanは,データがデータベース上からインスタンス中に読み込まれた状態のもので,Entity Beanとしてのアイデンティティを持っています。ready状態のものはEJBクライアントアプリケーションからアクセスされた時点ですでに実行できるようになっています。
-
pool状態
pool状態のEntity Beanは,データがデータベース上からインスタンス中に読み込まれていない状態のもので,Entity Beanとしてのアイデンティティを持っていません。pool状態のものは,一度活性化されready状態になってから実行できます。
ready状態のEntity Beanが多くなると,幾つかが非活性化されpool状態になります。ただし,このとき,ready状態のEntity Beanの中でトランザクション処理中のものについては,非活性化の対象になりません。
プール内のインスタンスの最大値(<pooled-instance> - <maximum>)には,プーリングされるready状態とpool状態のEntity Beanの最大数を指定します。これは,メモリ上に展開されるEntity Beanインスタンスの上限です。
プール内のインスタンスの最大値に「0」を指定した場合は,プーリングされるEntity Beanインスタンスの数は無制限になります。
プールされたインスタンスの数がこの値を超えると,J2EEサーバは,最も活性でないインスタンスを非活性化します。
-
- プール内のインスタンスの最小値
-
プーリングされるready状態とpool状態のEntity Beanの最小数を指定します。この値は,メモリ上に展開されるEntity Beanインスタンスの下限です。J2EEアプリケーション起動時にここで指定した数のEntity Beanが生成され,pool状態,またはready状態になりプーリングされます。プーリングされるEntity Beanの数は,EJBクライアントアプリケーションからのアクセス量に応じて,最大数と最小数の間になります。
プール内のインスタンスの最小値(<pooled-instance> - <minimum>)に0を指定した場合は,J2EEアプリケーション起動時にEntity Beanが生成されません。クライアントに参照されないEntity Beanインスタンスを,最低幾つメモリに保持しておくかを指定します。この値は,プール内のインスタンスの最大値(<pooled-instance> - <maximum>)の値を超えてはいけません。
- データのキャッシュ方法
-
Entity Beanのキャッシュモデル(コミットオプション)を指定します。
-
Full caching(commit option A)
トランザクション開始時にデータベースからEntity Beanインスタンスにデータが読み込まれないため,Entity Beanが前回のトランザクションコミット時と同じ状態のままでトランザクションが開始されます(例えば,前回のトランザクションコミット時からトランザクション開始時の間にほかのJ2EEサーバがEntity Beanを更新した場合,Entity Beanの状態の一貫性が保たれません)。Full cachingは参照系のEntity Bean用のキャッシュモデルです。
-
Caching(commit cache option B)
トランザクション開始時にデータベースからEntity Beanインスタンスにデータが読み込まれるため,Entity Beanがデータベースの最新状態と同じ状態でトランザクションが開始されます。Cachingは更新系のEntity Bean用のキャッシュモデルです。
-
No caching(commit cache option C)
トランザクションコミット時にEntity Beanが非活性化されます。トランザクション開始時には,一度活性化され,データベースからEntity Beanインスタンスにデータが読み込まれます。このため,Entity Beanがデータベースの最新状態と同じ状態でトランザクションが開始されます。No cachingは更新系のEntity Bean用です。また,トランザクションコミット時に必ず非活性化されるため,多数のEntity Beanを利用する場合のキャッシュモデルです。
-
- EJBオブジェクトの存在期限
-
タイムアウト値を秒単位で指定します。値は,0または正の整数値で指定します。パッシベイトされたEntity BeanのEJBオブジェクトは,最小でこのタイムアウト値に指定した時間,最大でこのタイムアウト値に指定した時間+usrconf.propertiesファイルのejbserver.container.passivate.scan.intervalに指定した値の時間だけ存在します。クライアントからタイムアウト値の時間を経過してもアクセスされない場合,該当するEJBオブジェクトは削除されます。
EJBオブジェクトの存在期限(<entity-timeout>)に「0」を指定した場合は,タイムアウトは発生しません。
(4) 注意事項
-
同時に生成できるEntity BeanのEJBオブジェクトの最大数に上限を指定した場合,プーリングされるEntity Beanの最大数にも上限を指定しなければいけません。
-
同時に生成できるEntity BeanのEJBオブジェクトの最大数,プーリングされるEntity Beanの最大数,プーリングされるEntity Beanの最小数の値は,次の条件を満たすように指定してください。
プーリングされるEntity Beanの最小数≦プーリングされるEntity Beanの最大数≦同時に生成できるEntity BeanのEJBオブジェクトの最大数