我正在使用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 的服务。
我尝试使用 aTransactionAwareDataSourceProxy
来包装我的共享数据源以与 the 一起使用,DataSourceTransactionManagers
但这没有效果。
上述异常是否意味着我可能必须使用单个事务管理器?