intra-mart Accel Platform アクセスコンテキスト仕様書 第7版 2018-08-01

4.1. ライフサイクル

ここでは、アクセスコンテキストのライフサイクルについて説明します。

4.1.1. 概要

アクセスコンテキストの生存期間をライフサイクルと呼びます。
アクセスコンテキストは、ライフサイクルの開始処理により、参照可能な状態となり、ライフサイクルの終了処理により、全てのアクセスコンテキストは破棄されます。
../../_images/lifecycle_1.png

図 アクセスコンテキストのライフサイクルイメージ

ライフサイクルは、管理方式によって以下の2つに分類されます。
  • システムライフサイクル

    システム実行環境のライフサイクルです。
    システム起動時に開始され、システム停止時に終了します。
  • アプリケーションライフサイクル

    システム実行環境以外のライフサイクルです。
    基盤機能やアプリケーションで管理され、明示的に開始終了を行うライフサイクルです。
プログラム中からアクセスコンテキストを常に利用可能とするために、実行環境ごとにライフサイクルが定義されています。
次節より、実行環境ごとのライフサイクルを説明します。

4.1.2. アプリケーションライフサイクル

4.1.2.1. Web実行環境

Web実行環境では、HTTPによるリクエストごとにライフサイクルの開始と終了処理が実行されます。
この処理は ServletFilter で行われます。
通常、Web実行環境では連続したアクセスが行われ、HTTPセッションにより、前回のアクセス情報が継続して利用されます。
アクセスコンテキストを利用した場合でも、前回のアクセス情報を継続するため、アクセスコンテキストのキャッシュ機能を利用します。
初回アクセス時やログイン時に作成したアクセスコンテキストはHTTPセッションに格納されます。
キャッシュされた情報は、ログアウトやHTTPセッションのタイムアウトが発生するまでは、次のアクセスでも継続して利用されます。
アクセスコンテキストの内容を変更する必要がある場合は、キャッシュを破棄して再作成されます。
アクセスコンテキストのキャッシュ機能の詳細は、「 キャッシュ 」を参照してください。
../../_images/lifecycle_2_web.png

図 Web実行環境のライフサイクルイメージ

4.1.2.2. ジョブスケジューラ実行環境

ジョブ実行環境では、ジョブスケジューラによりジョブネットごとにライフサイクルの開始と終了が実行されます。
ジョブネットの開始時に、ジョブネットに登録された情報を利用してアクセスコンテキストが生成されます。
../../_images/lifecycle_3_job.png

図 ジョブ実行環境のライフサイクルイメージ

ジョブスケジューラ、ジョブ、および、ジョブネットについては、「 ジョブスケジューラ仕様書 」を参照してください。

4.1.2.3. 非同期実行環境

非同期実行環境では、Web実行環境のアクセスコンテキストをコピーしてライフサイクルが開始されます。
処理の流れは以下の通りです。
  1. 非同期処理の要求時に、現在の Web実行環境のアクセスコンテキストを一時保存します。
  2. 非同期処理の開始時に、保存されたアクセスコンテキストを復元します。
  3. 非同期処理の終了時に、非同期実行環境のアクセスコンテキストを破棄します。
../../_images/lifecycle_4_async.png

図 非同期実行環境でのライフサイクルイメージ

非同期処理については、「 非同期仕様書 」を参照してください。

4.1.3. システムライフサイクル

4.1.3.1. システム実行環境

システム実行環境では、システムの起動時にシステムライフサイクルが開始され、システムの終了時にシステムライフサイクルが終了します。
システムライフサイクルは、それ以外のライフサイクルとは別途管理され、シングルトンのアクセスコンテキストの生成・破棄を行います。
アクセスコンテキストの取得要求があった場合は、以下の順に取得が行われます。
  1. 取得要求元の実行環境のアクセスコンテキストの取得

    取得できた場合、そのアクセスコンテキストを返却します。
  2. システム実行環境のアクセスコンテキストの取得

    1. が取得できなかった場合に、システム実行環境のアクセスコンテキストを返却します。
システム実行環境のアクセスコンテキストが取得されるのは、アプリケーションライフサイクルが開始していない場合です。
具体的には、システム起動処理や、バックグラウンドで動作するプロセスなどでアクセスコンテキストを利用する場合です。
システムライフサイクルとアプリケーションライフサイクル(以下の例では、Web実行環境)の動作イメージは、以下の通りです。
../../_images/lifecycle_5_system.png

図 システム実行環境とWeb実行環境のライフサイクルイメージ