我需要配置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:找不到当前线程的会话
如果我将我的数据源更改为不参与全局事务 - 此代码工作正常 - 但我需要在支持全局事务的数据源中工作