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