Interstage Application Server J2EE ユーザーズガイド |
目次 索引 |
第2部 Servlet/JSP編 | > 第7章 Webアプリケーションの開発 | > 7.2 サーブレットの開発 |
JavaTM Servlet APIでは、マルチスレッド・モデルとシングルスレッド・モデルの2つのスレッド・モデルが用意されています。
通常はマルチスレッド・モデルでサーブレットを作成します。
ただし、どちらのスレッド・モデルも1サーブレットに対し、1インスタンスです。
2つのスレッド・モデルの違いを説明します。
同時に複数の実行スレッドが動作することができますので、多重アクセスの対応に適しています。
メソッドやインスタンス変数をスレッド間で共有し、Servletコンテナによる排他制御が行われません。
そのため、メソッドやインスタンス変数の競合を避けたい場合は、synchronized宣言するなどのアプリケーションによる排他制御を行ってください。
同時に複数の実行スレッドは動作せず、メソッドやインスタンス変数の競合を避けるため、Servletコンテナによる排他制御が行われます。
そのため、後続のリクエストは実行中のサーブレットの処理が終了するまで待ち状態となります。
多重アクセスに対応する場合には不向きです。
以下にマルチスレッド・モデルを利用したDBアクセスの適用例を示します。
WebブラウザAからのリクエストで確立したコネクションIDをインスタンス変数に格納します。
WebブラウザBからのリクエストでは、インスタンス変数に格納されているコネクションIDを利用します。
コネクションIDを共有することにより、2回目以降のデータベースへのアクセスの高速化が実現します。
目次 索引 |