Interstage Application Server J2EE ユーザーズガイド |
目次
索引
![]() ![]() |
第3部 EJB編 | > 第20章 EJBサービスで使用できる時間監視機能 |
Session Beanは、クライアントがインスタンスを生成してから消去するまで存在し続けます。
Session Beanが生成(create)され、指定された時間内に消去(remove)されない場合、コンテナが自動的にSession Beanを消去します。
この機能を“セションタイムアウト”といい、その時間を“タイムアウト時間”といいます。
この機能を使用することにより、何らかの原因でクライアントアプリケーションがEJBアプリケーションを消去せずに終了してしまった場合、残ってしまうEJBアプリケーションを自動的に消去することができます。
ただし、セションタイムアウトは、EJBアプリケーションがトランザクション中(UserTransaction.begin()を発行して、UserTransaction.commit()またはUserTransaction.rollback()を発行していない状態)に動作することはありません。
したがって、EJBアプリケーションがトランザクション中の場合は、タイムアウト時間を超過してもトランザクションが終了(UserTransaction.commit()またはUserTransaction.rollback()を発行するか、トランザクションタイムアウトが発生)するまでタイムアウトは発生しません。
トランザクション機能については“EJBサービスが提供するトランザクション機能”を参照してください。
以下にタイムアウト時間に到達した場合の処理について説明します。
タイムアウト発生時の処理状況 |
処理内容 |
サーバ処理中にタイムアウト時間に到達した場合 |
EJBアプリケーションのメソッド処理が完了した時点で、タイムアウトが発生したことがサーバのシステムログに通知されます。 クライアントには、通知されません。 |
クライアント処理中にタイムアウト時間に到達した場合 |
タイムアウト発生と同時にタイムアウトが発生したことがサーバのシステムログに通知されます。 クライアントには、通知されません。 |
タイムアウトが発生した後、クライアントから消去されたSession Beanに処理の要求が行われた場合、要求されたSession Beanが存在しないことがサーバのシステムログに通知されます。クライアントには、例外が通知されます。
タイムアウト時間はEJBアプリケーションごとに秒単位で設定できます。タイムアウト値に0秒を指定した場合、タイムアウトは発生しません。
デフォルト値は0秒です。タイムアウト時間の設定方法については“定義情報(2)タグ”を参照してください。
目次
索引
![]() ![]() |