サーブレット・JSPメモ007:サーブレットのシングルインスタンス・マルチスレッドモデル
サーブレットは通常、最初にそのサーブレットへのリクエストがあるとインスタンス化され、init()が呼ばれる
1つのサーブレットはインスタンスが1つ作られてメモリに常駐し、同じサーブレットのリクエストに対しては同じインスタンスが利用される。
よってprivateな変数も複数のリクエスト間で共有される。読み取り専用データや定数以外はサーブレットのフィールドにすべきではない。
1つのサーブレットのインスタンスは1つで、マルチスレッドで動作する。
下記表はサーブレット・JSPの変数・属性がスレッドセーフかどうかを表している。
スレッドセーフ | |
---|---|
ローカル変数 | ○ |
インスタンス変数 | × |
static変数 | × |
リクエスト属性 | ○ |
セッション属性 | × |
アプリケーション属性 | × |
ページ属性(※) | ○ |
※:ページ属性はJSPのページスコープの属性。暗黙オブジェクトの pageContext に設定する。
« サーブレット・JSPメモ006:コンテキストパス | Main | Edyが楽天Edyに »
「サーブレット・JSP」カテゴリの記事
- サーブレット・JSPメモ018:Struts:Struts設定ファイルを分割した際のパス(2012.04.04)
- サーブレット・JSPメモ017:Struts:Tilesの利用(2012.04.02)
- サーブレット・JSPメモ016:Struts:validator-rules.xml(2012.03.27)
- サーブレット・JSPメモ015:Struts:StrutsタグライブラリでInvalidCancelException(2012.03.27)
- サーブレット・JSPメモ014:タグライブラリの利用(2012.03.23)
The comments to this entry are closed.
TrackBack
Listed below are links to weblogs that reference サーブレット・JSPメモ007:サーブレットのシングルインスタンス・マルチスレッドモデル:
Comments