Weblogic和hibernate配置

时间:2015-11-27 22:28:25

标签: java hibernate weblogic

我需要将使用hibernate的项目从Jboss迁移到weblogic。目前我正在使用此配置:

的persistence.xml

<persistence-unit name="pagosHibernate" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>...</class>
    <properties>
        <property name="hibernate.ejb.cfgfile" value="META-INF/hibernate.cfg.xml"/>
    </properties>
</persistence-unit>

的hibernate.cfg.xml

<hibernate-configuration>
    <session-factory>
        <property name="connection.datasource">MyDS</property>
        <property name="jndi.class">weblogic.jndi.WLInitialContextFactory</property>
        <property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.WeblogicTransactionManagerLookup</property>
        <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
        <property name="transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
    </session-factory>
</hibernate-configuration>

代码是:

EntityManager em = this.factory.createEntityManager();
EntityTransaction entityTransaction = em.getTransaction();
entityTransaction.begin();
...
em.persist(device);
entityTransaction.commit();

但我得到了:

java.sql.SQLException: Cannot call commit when using distributed transactions

由于

2 个答案:

答案 0 :(得分:1)

数据源&#34; MyDS&#34;在Hibernate配置中使用的看起来像XA DataSource。 在您的情况下,应使用非XA数据源。在Weblogic中配置DataSource时,您必须选择适当的瘦驱动程序。希望这会有所帮助。

答案 1 :(得分:0)

这个问题是由R Sawant所说的XA数据源引起的。然而,解决方案是创建一个非XA数据源并禁用全局事务(保持全局事务激活持久存在问题)。

我想知道如何配置这个项目来处理XA数据库,但那将是另一个问题。