首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >管理多个数据源的会话时出现问题

管理多个数据源的会话时出现问题
EN

Stack Overflow用户
提问于 2009-10-05 05:46:35
回答 1查看 454关注 0票数 1

我在一个项目中工作,在这个项目中,我们每个服务都引用四个独立的数据源。到目前为止,我们一直使用ProxyFactoryBean来引用Dao目标和Transaction Intereceptor -类似于下面的内容。

代码语言:javascript
复制
<bean id="readOnlyUserProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
   <property name="target" ref="readOnlyDao"/>
   <property name="interceptorNames">
      <list>
         <value>readOnlyTransactionInterceptor</value>
      </list>
   </property>
</bean>

对于不同的DAO,还有另外3个类似的代理。所有这些都涉及到不同的事务拦截器,而这些事务拦截器又连接到不同的事务管理器。简而言之,每个服务连接到4个dao代理,每个代理引用一个单独的事务拦截器,每个代理又引用一个连接到4个不同数据源的单独的事务管理器。到目前为止,使用lazy="false“都工作得很好。

现在,为了优化性能,我们希望启用“延迟加载”,并将hibernate会话带到处理程序层。我们认为最好的方法是通过“TransactionProxyFactoryBean”,因为我们不想使用OpenSessionInView方法。

我们已经尝试了一些方法,但由于我们通过每个服务连接到4个独立的数据源而陷入困境,现在我们可以将这4个独立的事务管理器连接到“TransactionProxyFactoryBean”。因此,我们无法找到在处理程序/服务层中管理来自不同数据源的事务的方法。

我刚刚开始这项工作,在Spring事务管理方面没有太多经验。请指导我任何可能的方法,我可以采取。

EN

回答 1

Stack Overflow用户

发布于 2009-10-05 07:19:00

管理跨多个数据源的事务是应用服务器的工作。应用服务器将通过JTA API公开这些事务,Spring可以使用JtaTransactionManager从JPA API桥接到Spring API。

至于如何配置应用服务器本身,这取决于它是什么应用服务器,您应该对该文档进行一些研究。这可能是一个相当复杂的操作,特别是当数据源分布在不同的数据库服务器上时(在这种情况下,您开始需要一个XA事务监视器,这一切都会变得非常复杂)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1518427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档