2011-01-14 17 views
0

私は複数のデータソース(複数のmysql dbsに対応)とtomcat dbcpを使用してspringを使用しています。 procは間違いなく Tomcat DBCPと複数のデータソースを持つSpring JDBC

  • デシベル中に存在する場合、プールから借りることができない - - 私が見つかりません

    • 手順のようないくつかの奇妙な例外を取得していますローカルのdevの設定なので、間違いなくプールが
    いっぱいではありません

    私は、このかもしれないと感じみんなからの入力を必要とする問題:

    私は私のspring.xmlで定義された1つのjdbcTemplateオブジェクトを持って、私は解雇する必要があるすべてのクエリに、私は適切なダを設定するjdbcTemplate.setDataSource()を呼び出しますtasourceを実行し、simplejdbccall(jdbctemplate)を使用してprocを実行します。

    複数のjdbcTemplateオブジェクトも定義する必要があります。つまり、定義されている各データソースごとに1つずつ設定します。 jdbctemplateのデータソースを設定し、格納されているprocを実行しているBeanは、prototypeと定義されています。

  • +0

    を助けることができる、これは恐ろしくスレッド安全ではありません。 –

    答えて

    5

    DataSourceを変更しない場合は、共有するJdbcTemplateを使用しないでください。 DataSourceを一度設定し、そのままにしておきます。

    JdbcTemplate複数の豆、それぞれDataSourceの1つを意味するか、必要に応じて手動で新しいJdbcTemplateオブジェクトを手動で作成し、共有しないでください。新しいものを作成する際にパフォーマンスに大きなオーバーヘッドはありませんが、それは問題ではありません。

    prototypeと定義できますが、手動でDataSourceを注入する場合はあまり意味がありません。 newを使用してJdbcTemplateをインスタンス化することもできます。

    0

    お返事ありがとうございます。 jdbctemplateの新しいインスタンスを毎回作成することによって、これらのエラーを克服してきました。私は最新のmysql jconnector jsr(5.1.14)にも更新しました クラスの設計はとても簡単です。私はインスタンスの変数としてjdbcTemplateオブジェクトをインスタンス化するカスタムjdbcラッパーを作成したカスタムインスタンスを使用するベースdaoを持っています。このインスタンス変数は、要求ごとにSimpleJdbcCallの新しいインスタンスで使用されます。すべての私のDAOクラスはこの基盤DAOから継承しています。 DatabaseMetaDataの.... を抽出しているときにエラー:

    org.springframework.jdbc.support.MetaDataAccessException:

    は、しかし、このようないくつかの断続的なエラーがあります。 。 。 によって: org.apache.tomcat.dbcp.dbcp.PoolingDataSource.checkConnection(): 接続が閉じられています。 このエラーのパターンは表示されません。私は各データソースのinitialSizeが&でmaxActiveが100です。ここで問題になる可能性のあるヒントはありますか?

    関連する問題