2

私は問題に直面しています。実際、私のプロジェクトでは接続プールにc3p0を使用していますが、Spring、Hibernate、JSFも使用しています。私の問題は、私のWebページに「logout」という名前のリンクがあることです。ユーザーがログアウトをクリックすると、接続が解放され、www.google.comがプールに戻ることができます。

よろしくお願いしますPrashant

4

1 に答える 1

1

あなたが期待しているのは、システムにログインする同時ユーザーの数を制御することです

3人目のユーザーがログインしようとすると、接続が解放されるのを待つ必要があります

これで、並行カウンターを使用してこれを実装できます

  • すべてのリクエストをフィルタリングするフィルタを作成します。
  • 新しいリクエストが作成されるたびに、カウンターをインクリメントします
  • ユーザーがログアウトすると、カウンターがデクリメントされます
  • カウンターが最大値に達したら、スロットが使用可能になるまでそのスレッドを待機させます。

JMXまたは個別の管理コンソールを介してユーザーの最大数を制御できます。また、接続を処理しているスレッドが終了したときに接続を解放する必要があります(セッションオブジェクトには参照がないため、GCで実行でき、タイムアウト後にプールで再利用されます)。

DBリソースを使用してボトルネックを作成しないことをお勧めします。

于 2012-04-10T11:48:22.437 に答える