0

リクエストが来るとサーブレットがユーザーIDをチェックし、IDがない場合は、データベースに新しいユーザーIDを作成します。しかし、非常に短い遅延で複数のリクエストを受け取った場合、それらのリクエストはすべて、現時点でユーザーがいないことを確認し、同じ名前の複数のユーザーを作成する傾向があります。この問題を解決するために、ユーザーIDフィールドを一意にしたくありません。ユーザーIDの他に、いくつかの関連データも保存します。

1つのサーブレットリクエストの処理が完了するまでDBをロックしておく方法を知る必要があります。

4

1 に答える 1

-1

サーブレットコードを同期させる必要があります。

簡単な方法は、サーブレットにSingleThreadModelを実装させることです。

http://www.javatpoint.com/SingleThreadModel-interface

ただし、サーブレットは一度に1つのスレッド/リクエストのみを処理するため、これは適切なアプローチではありません。良い解決策は、uidをチェックして生成する部分を同期することです。

于 2012-12-13T07:20:54.910 に答える