Interstage Application Server J2EE ユーザーズガイド
目次 索引 前ページ次ページ

第3部 EJB編> 第16章 EJBサービスの基本機能> 16.8 各種オプション

16.8.1 EJB objectのタイマー削除

 EJB objectのタイマー削除機能について、以下に説明します。

高速呼出し機能を使用する場合

 create/finderメソッドにより生成されたEJB objectのインスタンスは、removeメソッドが発行されるとメモリ上から消滅します。

 Entity Beanは、通常removeメソッドが発行されないBeanであるため、Entity Beanを高速に呼び出すBeanとして指定した場合、create/finderメソッドにより生成されたEJB objectのインスタンスがメモリ上に残存してしまいます。

 こうした状況が発生するのを防ぐために、Entity Beanへの最終アクセスから一定時間後に、放置されたEJB objectのインスタンスを削除する機能があります。この機能を、“EJB objectのタイマー削除機能”といい、その時間を、“Entity BeanのEJB objectタイムアウト”といいます。

 高速に呼び出されるBeanにEntity Beanを指定した場合は、以下のタイミングでEJB objectがJavaのガーベージコレクションの対象となり、自動的に削除されます。そのため、このEJB objectのタイマー削除機能は、高速に呼び出すBeanのEntity Beanで有効です。

 Entity BeanのEJB objectタイムアウト値の設定は、カストマイズツールで行います。設定方法の詳細は、“定義情報(2)タグ”を参照してください。

image

 トランザクション中にEJB objectが削除されないように、EJB objectタイムアウト値はトランザクションタイムアウト値より大きく設定してください。

注意事項

 Entity Beanを高速に呼び出すBeanに設定した場合、EJB objectがタイマー削除されない間でメモリに残存したり、データベースのレコードを大量に扱う場合にはCORBAの通信路を頻繁に経由することになるため、Entity Beanはできるだけ高速に呼び出されるBeanに設定してください。

Light EJBコンテナ機能を使用する場合

 create/finderメソッドにより生成されたEJB objectのインスタンスは、removeメソッドが発行されるとメモリ上から消滅します。

 Entity Beanは、通常removeメソッドが発行されないBeanであるため、Entity Beanをプロセス外から呼び出した場合、create/finderメソッドにより生成されたEJB objectのインスタンスがメモリ上に残存してしまいます。

 こうした状況が発生するのを防ぐために、Entity Beanへの最終アクセスから一定時間後に、放置されたEJB objectのインスタンスを削除する機能があります。この機能を、“EJB objectのタイマー削除機能”といい、その時間を、“Entity BeanのEJB objectタイムアウト”といいます。

 Entity Beanをプロセス外から呼び出した場合は、以下のタイミングでEJB objectがJavaのガーベージコレクションの対象となり、自動的に削除されます。そのため、このEJB objectのタイマー削除機能は、プロセス外から呼び出されるEntity Beanで有効です。

 Entity BeanのEJB objectタイムアウト値の設定は、カストマイズツールで行います。設定方法の詳細は、“定義情報(2)タグ”を参照してください。

image

 トランザクション中にEJB objectが削除されないように、EJB objectタイムアウト値はトランザクションタイムアウト値より大きく設定してください。

注意事項

 Entity Beanをプロセス外から呼び出した場合、EJB objectがタイマー削除されない間でメモリに残存したり、データベースのレコードを大量に扱う場合にはCORBAの通信路を頻繁に経由することになるため、Entity Beanはできるだけ同一JavaVM内で呼び出されるBeanに設定してください。
 


目次 索引 前ページ次ページ

All Rights Reserved, Copyright (C) 富士通株式会社 2006