分データの格納先と寿命(スコープ)このアーカイブは同期化されません。日記が更新されても、このアーカイブには反映されません。限らないが、プログラムが使う永続的なデータは、データベースやファイル等に格納する。プログラムが扱うデータには一時的なものもある。これは例えば画面のレイアウトや状態管理のために、(変数などの)メモリを割り当てて格納しておくデータだ。アプリケーションの場合はどうなるか。決められたルールに従わなければならない。コンテナの制御下にあるからだ。開発者の利便性を考えて、データを格納するための領域をいくつか用意している。つのクラスについては、その役割を解説してきたが、これらクラスは、一時的なデータを保持する役割も持つ。これらクラスはそれぞれ個別に「属性領域」を持っている。ようなものであり、そこに、文字列のキーを利用して任意のオブジェクトを登録することができる。等のメソッドを利用する。関連付けられた属性の寿命もそれに従うことになっている。要求の間のみ存在する。この事を「リクエストスコープを持つ」と呼ぶ。完結するならばあまり使われない。応答が返されると、リクエスト属性は全て破棄される。つのスレッド上で実行されるので。事実上、リクエスト属性のスレッド同期は考えなくてよい。昨日説明したセッションが存在する間有効となる。この事を「セッションスコープを持つ」と呼ぶ。処理状態などを記憶するために使用する事が多い。セッションは非常に便利なのだが、幾つかの注意点がある。巨大なメモリを消費するオブジェクトを配置してはならない。格納するオブジェクトはシリアル化可能でなければならない。実装しなければならない)そして、セッションはタイムアウトによって開発者が予期することなく破棄される事があること。サーバのリソースを消費するオブジェクトを登録する場合、そのリソースを解放するタイミングに注意する必要がある。複数の異なるリクエストが要求される可能性があること。これは、素早くフォームの再送信を行っただけでも発生する。アクセスはスレッドセーフではない。これが意外に盲点になることが多い。アプリケーションが実行されている間存在する。この事を「アプリケーションスコープを持つ」と呼ぶ。アプリケーション属性は、言わばグローバル変数である。アプリケーションのあらゆる部分で共有される。アクセスもセッション同様、スレッドセーフではないということに注意すること。実行中は、読み取り専用として利用する事が多い。データベース接続など、リソースを消費するオブジェクトを配置するのも良い方法だ。非常に重要なことであるため、必ず習得しておきたい所だ。