IlvManagerServlet クラスは Servlet API からの
SingleThreadModel
インターフェースを実装しないので、マルチスレッド・モデルまたはシングル・スレッド・モデルを使用するサーブレットを作成することができます。
サーブレットが
SingleThreadModel
インターフェースを実装している場合は、サーブレットへの同時アクセスを処理する必要はありません。サーブレットはスレッド・セーフです。ただし、このインターフェースは、
静的クラス変数またはサーブレットの範囲外のクラスなど、
サーブレットが共有リソースへアクセスする結果生じる同期化問題を避けることはできません。サーブレットが
SingleThreadModel
インターフェースを実装していない場合は、サーブレットへの同時アクセスに配慮する必要があります。IlvManagerView
上で IlvManagerServlet
が行うすべての基本操作は、既に同期化されています。つまり、IlvManagerView
に対して何か追加のアクションを実行する場合のみ、同時アクセスに注意する必要があります。この場合は、ロック・オブジェクトを定義して、IlvManagerServlet
の getLock
メソッドを使用できます。各要求の処理は次のように実装されています。... reads the request parameters ... synchronized(getLock(request)) { IlvManagerView view = getManagerView(request); ... handle the request ... }
デフォルトでは、
getLock
メソッドは毎回新規オブジェクトを返します。つまり、セッションは同期化されていません。