为了避免XA开销,我从前缀项目中的一些表名和滚出来是一样的mysql数据库是项目B的内部,所以我可以使用相同的连接 - 并希望得到全原子等多个会话工厂,一个连接?
A计划和B虽然有非常不同的会话工厂配置。我为项目B配置了HibernateTransactionManager,而A仅使用 TransactionSynchronizationManager.hasResource(sessionFactoryA) OSiV样式代码与事务一起使用。
这是否在工作原理?我刚刚在A中尝试了一个断点,然后等待,然后继续,超时导致B回滚,但A仍然提交!!?
什么给?谢谢你的帮助。
我意识到需要使用相同的连接....这让我想到了,如何提供一个自定义的hibernate.current_session_context_class,它可以查找不同的sessionFactory来返回相同的连接? – adam 2010-01-20 17:20:58
好的。 hibernate.current_session_context_class不合适,但hibernate.connection.provider_class是!我可以实现这一点,并getConnection“返回staticSessionFactoryB.getCurrentSession()。连接();” 我的设置不需要内部事务等,并且默认的on_close会话的连接在tx结束,因此一切似乎都很好。我有一个真正的共享资源。请告诉我,如果你看到任何clangers!也许这是帕斯卡尔在下面提到的? – adam 2010-01-20 22:45:36