ott*_*ath 5 oracle spring hibernate transactions jms
我将Oracle 11g用于我的数据库,将Oracle Streams AQ功能用作JMS实现.
据我所知,应该可以实现一个基于Spring的消息驱动的POJO(MDP),它使用相同的数据源进行事务数据访问和JMS事务 - 所有这些都没有XA-Transactions(IIRC,它作为一个市场销售) SpringSource Advanced Pack for Oracle的特性).
这也可以使用Hibernate吗?理想情况下,我的MDP将启动JMS事务并从队列中读取消息,然后通过Hibernate重新使用该事务进行数据访问.如果出现任何问题,JMS和数据库事务都将回退,而不使用两阶段提交(2PC).
我不是一个交易大师,所以在我开始深入挖掘之前,任何人都可以确认这是可能的并且也有意义吗?
更新:
我想要的是共享事务资源模式的实现.该示例代码演示了它的ActiveMQ和JDBC,但我需要使用Oracle流AQ和Hibernate.
Update2: SpringSource Advanced Pack for Oracle 作为Spring Data JDBC的一部分开源,它"提供了使用单个本地事务管理器进行数据库和消息访问的选项,而无需采用昂贵的分布式两阶段提交事务管理".
正如您所说,2PC 应该不是必需的,因为应用程序服务器应该处理它。但是,您几乎必须使用 JTA(即 JavaEE 容器)事务,而不是普通的 DataSource 事务,因为 JMS 只能与 JTA 配合使用。
这没什么大不了的,只是有点麻烦:
<jee:jndi-lookup/>
获取对容器的引用
DataSource
,并将该数据源注入到 spring 管理的 hibernate SessionFactory 中。<tx:jta-transaction-manager/>
应该在大多数应用程序服务器中工作)。MessageListenerContainer
,将上述事务管理器引用插入其中。这一切都有意义吗?还是我应该详细说明?此设置应确保容器管理的事务在 JMS 和 Hibernate 交互中保持。
归档时间: |
|
查看次数: |
5757 次 |
最近记录: |