-->

交易在JTA环境的setTimeout忽略(Transaction setTimeOut ignor

2019-09-28 03:21发布

我们有一个问题,在具体操作设置事务超时,在使用Hibernate 4.2.1和JBoss 7AS应用程序重写一般超时,因为我们发现与“setTimeout的”设置值被忽略。

我们有一个JTA非CMT持久单元是这样的:

<persistence-unit name="ourName" transaction-type="JTA">
  <provider>org.hibernate.ejb.HibernatePersistence</provider>
  <jta-data-source>java:/datasources/ourDataSourceName</jta-data-source>
  <properties>
        <property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.JTATransactionFactory"/>
        <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
        <property name="hibernate.show_sql" value="false" />
        <property name="hibernate.format_sql" value="false" />
  </properties>
</persistence-unit>

然后,我们宣布这样的persistenceUnit:

@PersistenceUnit(unitName="ourName")
private EntityManagerFactory emf;

而且从它那里得到了一个SessionFactory。 有了这样SessionFactory对象,我们打开一个会话,并进入我们设定的超时开始交易前,交易:

session = sessionFactory.openSession ();
tx = session.getTransaction ();
tx.setTimeout (200);
tx.begin ();

在我们的standalone.xml config文件中我们设置全局超时为(10s内显示的数值是只是为了测试,当然。):

coordinator-environment enable-statistics="true" default-timeout="10"/>

其结果是,不管值,我们通过“setTimeout的”设置为10秒的超时始终适用。

与我们正在做的错误观念有任何人将不胜感激!

谢谢!

文章来源: Transaction setTimeOut ignored in JTA environment