を使用してSpring
います。単一のデスクトップ アプリケーションで使用されているサービスが多数あります。これは分散システムではないため、すべてのサービスはアプリケーション自体の一部であり、リモートで実行されていません (これが理想的ではないことは承知しています)。
データベース接続の数を減らすために、サービスごとに異なるデータ ソースを使用する代わりに、すべてのサービスに同じデータ ソースを使用したいと考えました。を使用してこれを達成しましたBeanFactoryPostProcessor
。データ ソースを許可するすべての Bean に共有データ ソースを挿入します。
私が直面している問題は、アプリケーションが正しくロードされているように見えますが、すべての Bean が正しく初期化され、データ ソースが問題なく挿入されていることです。アプリケーションで何かをしようとすると、次の例外が発生します。
"org.springframework.transaction.IllegalTransactionStateException:
Pre-bound JDBC Connection found!
HibernateTransactionManager does not support running within DataSourceTransactionManager if told to manage the DataSource itself.
It is recommended to use a single HibernateTransactionManager for all transactions on a single DataSource, no matter whether Hibernate or JDBC access."
また、 との両方を使用していることにも言及する必要がHibernateTransactionManagers
ありDataSourceTransactionManagers
ます。DataSourceTransactionManagers
を扱うときに使用されJDBC
、HibernateTransactionManagers
Hibernate を使用するサービスに使用されます。
TransactionAwareDataSourceProxy
で使用する共有データ ソースをラップするために を使用しようとしましたDataSourceTransactionManagers
が、これは効果がありませんでした。
上記の例外は、単一のトランザクション マネージャーを使用する必要がある可能性があることを意味しますか?