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."

我还必须提到我同时使用HibernateTransactionManagersDataSourceTransactionManagersDataSourceTransactionManagers在处理时使用JDBCHibernateTransactionManagers用于使用 Hibernate 的服务。

我尝试使用 aTransactionAwareDataSourceProxy来包装我的共享数据源以与 the 一起使用,DataSourceTransactionManagers但这没有效果。

上述异常是否意味着我可能必须使用单个事务管理器?

4

0 回答 0