0

grails アプリケーションで複数のデータソースを使用する必要があります。ユーザーごと、つまり http セッションごと (ユーザーのログインからログアウトまで)、アプリケーションはユーザーの要求に基づいて異なるデータソースを取得します。

http://www.leebutts.com/2008/07/switchable-grails-datasource.html

上記のリンクは、これに対する適切な解決策を提供します。そのページで述べたように、動的構成を変更して実装しました。うまく機能しています。

1) しかし、このコードはどのようにデータソースをセッションからセッションに切り替えますか? 2)ThreadLocal contextHolderこのコードでは何を使用していますか?

説明してください 。. .

ありがとうございました。

4

1 に答える 1

0

Grails はリクエストをスレッドにバインドします。ThreadLocal変数は、それにアクセスするスレッドごとに異なる値を保持します (同期なしでスレッド セーフを許可します) 。

したがって、彼の流れで何が起こるかは次のとおりです。

  1. ユーザーは、コントローラーがユーザーのセッションに保存する で をEnvironment選択します。EnvironmentController

  2. 彼はbeforeFilter各リクエストを見てEnvironment、ユーザーのセッションに があるかどうかを判断します。もしそうなら、彼はEnvironmentHolderをその環境を指すように設定します。これは であるためThreadLocal、各スレッド (この場合はリクエスト) は独自の値を持つことができます。

  3. dataSourceBean にアクセスすると、そのBeanはのSwitchableDatasource値に保持されている値に基づいて正しいデータソースを選択します。EnvironmentHolderThreadLocal

于 2013-06-21T14:40:24.677 に答える