2012-02-15 2 views
0

私のアプリケーションでは、接続プーリングにc3p0を使用しています。私は、コンテキストfile.Configurationにユーザー名とパスワードは以下の通りです提供:私のアプリケーションの負荷はその後、春には、このユーザー名とパスワードを使用して接続を行わc3p0を使用している複数のユーザーログオン

<bean id="datasource" 
      class="com.mchange.v2.c3p0.ComboPooledDataSource" lazy-init="true" destroy-method="close"> 
      <property name="driverClass" value="com.ibm.as400.access.AS400JDBCDriver" /> 
      <property name="jdbcUrl" value="${url}" /> 
      <property name="user" value="${username}" /> 
      <property name="password" value="${password}" /> </bean> 

。 問題は、他のユーザーがログインページを使用して自分のプロフィールでログインしてから、スプリング接続を新しいユーザーの接続に置き換えたい場合です。データの取得は新しいユーザーのプロフィールで完了します。プロパティファイルを変更したい Plsが私を支援します。

答えて

0

シナリオでは、すべてのセッションが独自の接続を開く必要があるため、接続プールを持つことは意味がありません。

ユーザーがログインしてセッションスコープで同じ接続を維持しているときは、接続を開く方がよいでしょう。また、必要に応じて新しい接続を開くこともできますが、それは避けたい余分なオーバーヘッドです。リソースの漏れに注意してください。ログインする各ユーザはそれぞれ独自の接続が必要なので、放棄セッションで大量のオープンな接続を避けるために、セッションタイムアウトをかなり低く設定する必要があります。

+0

あなたが言ったように、スプリングDI機能を使用することはできません。エンティティマネージャファクトリオブジェクトを作成する際にSpringで私の接続が使用されているため、Springのコンテキスト外で接続を開くと、どうすればこの接続を設定できますか春の文脈では –

+0

私はこれが達成できると確信していますが、それは非常に些細なことではないでしょうし、おそらくあなたからのカスタムコンポーネントを含むでしょう。心に浮かぶ1つのアプローチは、LocalContainerEntityManagerFactoryBeanで使用する独自のセッションスコープのデータソース実装を作成することです。セッションスコープのカスタムデータソースでは、そのユーザーセッションの接続を手動で作成して維持する必要があります。 – pap

関連する問題