如何使用支持全局事务的weblogic数据源配置hibernate会话工厂

时间:2015-02-19 11:28:42

标签: spring hibernate transactions

我需要配置hibernate会话工厂来与weblogic 10.3.3中配置的现有数据源进行通信。我正在使用spring 4.x和hibernate 4.x

此数据源支持全局事务并模拟单阶段提交
有几个问题:
我应该使用什么事务管理器 - 我假设因为我的数据源支持Global Tx - 它应该是一个JTA数据源?

这就是我所拥有的:
spring应用程序上下文:

<bean id="sessionFactoryCommon"  
  class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="configLocation" value="classpath:COMMON.hibernate.cfg.xml" />
</bean>

<bean id="transactionManagerCommon"  
class="org.springframework.transaction.jta.WebLogicJtaTransactionManager"  />

<tx:annotation-driven transaction-manager="transactionManagerCommon"  />

<bean id="pitHibDao"
    class="com.abc.PitDaoHibernate"
    lazy-init="true">
    <property name="sessionFactoryCommon" ref="sessionFactoryCommon" />
</bean>

文件 - COMMON.hibernate.cfg.xml包含:

<hibernate-configuration>
<session-factory>
    <!-- this is jndi name of weblogic datasource -->
    <property name="connection.datasource">DSECRDS1</property>
    <property name="show_sql">true</property>
    <property name="format_sql">true</property>
    <property name="use_sql_comments">true</property>
    <property name="default_schema">ABC</property>      

</session-factory>
</hibernate-configuration>

我的Dao使用@Transactional注释 - 但是当我运行此代码时,我得到一个异常 - org.hibernate.HibernateException:找不到当前线程的会话

如果我将我的数据源更改为不参与全局事务 - 此代码工作正常 - 但我需要在支持全局事务的数据源中工作

0 个答案:

没有答案