まるきゅう サーブレットとJSP 9:)
今回は
9章〜
◎アプリケーションスコープについて
これまでのリクエストスコープとセッションスコープはユーザーごとのスコープだったけど、アプリケーションの中には全ユーザーで利用したいインスタンス(データ)もある
この場合に使えるのがアプリケーションスコープ(1つのアプリケーションにつき1つ作成されるスコープ)
アプリケーションスコープに保存したインスタンスはWebアプリケーションが終了するまでの間アプリケーション内のすべてのサーブレットクラスとJSPファイルで利用できる
Webアプリケーションの開始と終了は次のような操作や機能で行われる
・サーバの開始と停止
・オートリロード機能
・管理ツールによる開始と終了
アプリケーションスコープの正体はjavax.servlet.http.ServletContextインスタンスである
JSPファイルでアプリケーションスコープを使用する場合暗黙オブジェクトapplicationを使用する
◎アプリケーションスコープの注意点
・同時アクセスによる更新
アプリケーションスコープ内のインスタンスを更新するような処理を複数のリクエストがほぼ同じタイミングで行うとアプリケーションスコープのインスタンスに不整合が発生する場合がある
対処法としてはこういうことが問題になる場合はアプリケーションスコープでデータを保存しない(データベースとかつかう)、またはスレッド(処理の単位のこと)による競合が発生しないよう調停を行う
・インスタンスの保存期間
アプリケーションスコープに保存したデータ(インスタンス)はメモリ上にあるためWebアプリケーションを終了すると消滅する
Webアプリケーション再開後でも使用するならファイルやデータベースに保存する必要がある
またセッションスコープと違いタイムアウトがない。削除しないとメモリにインスタンスが残り続けてしまう
そのままだとメモリを圧迫するから注意!
9章はこんな感じ
Webアプリケーションの開始と終了のとこがイマイチかなぁ?
一旦すべてのスコープの違いをしっかり把握すること
注意点のところをよく理解しておくこと
次は10章アプリケーション作成だ!