2012-01-25 7 views
1

事実:サーブレット・コンテナがサーブレットごとに1つのインスタンスを作成します(この事実は正解です)
クエスト:2つのリクエストが同じサーブレットに送信され、 1つの要求によって送信された値は、他の要求によって上書きされますか? これはどのように処理されますか、コンテナはそれを単独で処理するのでしょうか? 返信してください複数のリクエスト・ハンドル・サーブレット

答えて

1

事実であることを確認してください。サーブレットコンテナは、サーブレットごとに1つのインスタンスを作成します保証されません

が、通常は真(私はこの事実上の正しい午前願っています) 。事実よりも仮定が多い。

同じリクエストに対して2つのリクエストが同じサーブレットに送信され、同じレコードのテーブルY内のxカラムが更新されたとしますと、1つのリクエストによって送信された値は他のリクエストによって上書きされますか?これがどのように処理されるのですか?コンテナはそれを単独で処理するでしょうか?

これはサーブレットコンテナではなく、データベースによって異なります。同じサーブレットインスタンスを使用する2つのスレッドがあり、それぞれに独自のデータベース接続があります。

もちろん、2番目のリクエストは最初のリクエストでそこに置かれたデータベースの値を上書きします。あなたがこれがうまくいくと思っていることが他には分かりません。

0

サーブレットのインスタンスが1つあります。正しい。

しかし、要求はコンテナによって作成された別のスレッドによって処理されます。
サーブレットコードは2つの異なるスレッドによって呼び出されます。

だからあなたのコードがスレッドセーフ

関連する問題