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

第3部 EJB編> 第20章 EJBサービスで使用できる時間監視機能

20.1 セションタイムアウト

 Session Beanは、クライアントがインスタンスを生成してから消去するまで存在し続けます。
 Session Beanが生成(create)され、指定された時間内に消去(remove)されない場合、コンテナが自動的にSession Beanを消去します。

 この機能を“セションタイムアウ”といい、その時間を“タイムアウト時”といいます。
 この機能を使用することにより、何らかの原因でクライアントアプリケーションがEJBアプリケーションを消去せずに終了してしまった場合、残ってしまうEJBアプリケーションを自動的に消去することができます。

image

 ただし、セションタイムアウトは、EJBアプリケーションがトランザクション中(UserTransaction.begin()を発行して、UserTransaction.commit()またはUserTransaction.rollback()を発行していない状態)に動作することはありません。

 したがって、EJBアプリケーションがトランザクション中の場合は、タイムアウト時間を超過してもトランザクションが終了(UserTransaction.commit()またはUserTransaction.rollback()を発行するか、トランザクションタイムアウトが発生)するまでタイムアウトは発生しません。

 トランザクション機能については“EJBサービスが提供するトランザクション機能”を参照してください。

 以下にタイムアウト時間に到達した場合の処理について説明します。

タイムアウト発生時の処理状況

処理内容

サーバ処理中にタイムアウト時間に到達した場合

EJBアプリケーションのメソッド処理が完了した時点で、タイムアウトが発生したことがサーバのシステムログに通知されます。

クライアントには、通知されません。

クライアント処理中にタイムアウト時間に到達した場合

タイムアウト発生と同時にタイムアウトが発生したことがサーバのシステムログに通知されます。

クライアントには、通知されません。

 タイムアウトが発生した後、クライアントから消去されたSession Beanに処理の要求が行われた場合、要求されたSession Beanが存在しないことがサーバのシステムログに通知されます。クライアントには、例外が通知されます。

■ タイムアウト時間の設定方法

 タイムアウト時間はEJBアプリケーションごとに秒単位で設定できます。タイムアウト値に0秒を指定した場合、タイムアウトは発生しません。

 デフォルト値は0秒です。タイムアウト時間の設定方法については“定義情報(2)タグ”を参照してください。


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

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