1

を使用して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を扱うときに使用されJDBCHibernateTransactionManagersHibernate を使用するサービスに使用されます。

TransactionAwareDataSourceProxyで使用する共有データ ソースをラップするために を使用しようとしましたDataSourceTransactionManagersが、これは効果がありませんでした。

上記の例外は、単一のトランザクション マネージャーを使用する必要がある可能性があることを意味しますか?

4

0 に答える 0