是否可以将单个Spring DataSource与多个TransactionManagers一起使用?

时间:2013-04-23 16:40:37

标签: java spring

我正在使用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."

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

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

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

0 个答案:

没有答案