首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebSphereUowTransactionManager返回空transactionManager

WebSphereUowTransactionManager返回空transactionManager
EN

Stack Overflow用户
提问于 2014-02-26 21:48:57
回答 1查看 1.5K关注 0票数 0

我有一个遗留代码,它使用TransactionManager来获得对事务的访问,从而将同步对象与事务afterCommit相关联。

当我迁移到Spring 3时,推荐给我的解决方案的事务管理器是WebSphereUowTransactionManager,实际上,我觉得它只是真正事务管理器的工厂。但是这个事务管理器总是在方法getTransactionManager()中返回null。

我正在使用EJB的2.1 (遗留,还记得吗?)和CMT一起。

我的配置是Spring3.1.2.RELEASE,Hibernate 3.6.8.Final,Websphere 6.1.0.43,我的bean是:

代码语言:javascript
复制
<bean 
    id="transactionManager" 
    class="org.springframework.transaction.jta.WebSphereUowTransactionManager" />   


<bean 
    name="auditContextManager" 
    class="... my class ...">
    <property name="transactionManager">
        <bean factory-bean="transactionManager" factory-method="getTransactionManager" />
    </property>
</bean>

我的hibernate配置是:

代码语言:javascript
复制
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.jdbc.fetch_size">200</property>
    <property name="hibernate.jdbc.use_get_generated_keys">true</property>
    <property name="hibernate.bytecode.use_reflection_optimizer">true</property>
    <property name="hibernate.connection.datasource">java:comp/env/jdbc/ORDS</property>
    <property name="hibernate.dialect">org.hibernate.dialect.Oracle9iDialect</property>
    <property name="hibernate.max_fetch_depth">3</property>
    <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
    <property name="hibernate.transaction.factory_class">org.hibernate.transaction.CMTTransactionFactory</property>
    <property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.WebSphereExtendedJTATransactionLookup</property>
    <property name="hibernate.show_sql">false</property>
    ... too much mappings to show here ...
  </session-factory>
</hibernate-configuration>

而我的bean auditContextManager总是将transactionManager设置为null。

在我看来,WebSphereUowTransactionManager并不是故意公开事务管理器的。这样行吗?

有什么办法让我去找交易经理吗?因为WebSphereUowTransactionManager不是真正的事务管理器,而是一个事务管理器工厂。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-27 09:00:45

它不是TransactionManager的工厂,但是顾名思义,UOWManager。它使用Websphere本机API来管理事务(与普通的JTA相比,它对某些事情有更广泛的支持)。

所以不会有一个TransactionManager,它将永远是null

基本上,如果要使用transactionamanager,就必须执行JNDI查找。

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

https://stackoverflow.com/questions/22054122

复制
相关文章

相似问题

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