如何从java:comp / UserTransaction更改为java:jboss / UserTransaction

时间:2014-10-22 06:44:23

标签: hibernate jboss7.x

我了解到java:comp / UserTransaction不适用于Jboss 7.x中的非EE线程。我的应用程序中有非EE线程默认调用java:comp / UserTransaction,请问如何将此默认值更改为java:jboss / UserTransaction?我需要帮助..

2 个答案:

答案 0 :(得分:0)

对于Java EE 6和更低版本,最好不要在应用程序中创建线程,因为您可以看到丢失了上下文。但是,在Java EE 7中,您可以使用新的ManagedExecutorService。这在WildFly中可用,但不适用于JBoss AS 7.x。

您也可以ManagedExecutorService注入@Resource

如果它不是使用WildFly的选项,唯一的方法是在启动新线程之前将其复制一些。虽然这可能相当危险,因为交易意味着由容器管理,而你在容器外使用它。

答案 1 :(得分:0)

如果您有Hibernate配置文件,例如hibernate.cfg.xml,您可以添加此属性:

<property name="jta.UserTransaction">java:jboss/UserTransaction</property>

我在this document找到了它,它对我有用。您的hibernate.cfg.xml文件应如下所示:

<hibernate-configuration>
    <session-factory>
        ...
        <property name="transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
        <property name="transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
        <property name="jta.UserTransaction">java:jboss/UserTransaction</property>
        ...
    </session-factory>
</hibernate-configuration>