0

私は接続プリペアの春の設定を使用しています。ここでは、取得したすべての接続に対してクライアント識別子を設定する必要があり、データベースポリシーで使用できます。ここで、複数のリクエストが並行して送信されると、使用している接続プリペアラーにユーザー名が渡されるために混乱するという問題があります。

スプリングジャーを使用して、春から以下のリンクを正確にたどっています。

http://static.springsource.org/spring-data/jdbc/docs/current/reference/html/orcl.connection.html 私が行っている 1 つの余分なことは、クライアント識別子クラスに可変ユーザー名を持ち、 setter メソッドと getter メソッドを呼び出し、これをストアド プロシージャへのパラメーターとして呼び出します。

私の問題は、並列トランザクションがあるときに、注入されたクライアント識別子シングルトン Bean が、渡したユーザー名の古いコピーを持っていることです。

リクエストからこの Bean にユーザー名を渡す動的メソッドを設定するための他のより良いオプションはありますか? Bean を取得している間、正しい値を返す必要があります。

どんな助けでも大歓迎です。

4

1 に答える 1

0
  1. ThreadLocal 変数を使用してユーティリティ (静的変数/メソッド) クラスを作成します。ゲッターとセッターを提供します。
  2. リクエストからユーザーを取得するフィルターを作成します。このユーザーを上で作成したスレッドローカルに設定します。
  3. いつでもどこでもゲッターを呼び出します(たとえば、参照したリンクで呼び出し可能なステートメントを呼び出す前に「prepSql」をビルドする場合)。
于 2013-11-26T22:34:12.960 に答える