Java EJB@Asynchronous-事务在执行几分钟后不处于活动状态
在我的singleton会话bean中有一个异步方法,它在执行几分钟后,在完成另一个事务的方法后抛出以下异常: 原因:org.jboss.util.NestedSQLException:事务未激活:tx=TransactionImpleJava EJB@Asynchronous-事务在执行几分钟后不处于活动状态,java,asynchronous,transactions,jboss,ejb,Java,Asynchronous,Transactions,Jboss,Ejb,在我的singleton会话bean中有一个异步方法,它在执行几分钟后,在完成另一个事务的方法后抛出以下异常: 原因:org.jboss.util.NestedSQLException:事务未激活:tx=TransactionImple
谢谢。1.在transaction-jboss-beans.xml中配置默认超时:
100
2.使用BMT手动设置事务的超时:
userTransaction.setTransactionTimeout(100)代码>
3.在方法级别重写xml定义中的会话bean:
//--
<method-attributes>
<method>
<method-name>someMethod</method-name>
<transaction-timeout>100</transaction-timeout>
</method>
</method-attributes>
//--
//--
某种方法
100
//--
是的,您可以使用注释@TransactionTimeout
如果您不想调整标准超时,可以为特定业务方法设置事务超时。为此,JBoss/Wildfly提供了@TransactionTimeout
注释
开始之前,请确保已将依赖项添加到项目中:
<dependency>
<groupId>org.jboss.ejb3</groupId>
<artifactId>jboss-ejb3-ext-api</artifactId>
<version>2.2.0.Final</version>
<scope>provided</scope>
</dependency>
该规范不包括事务超时。将其标记为“jboss”,希望更熟悉该平台的人能提供帮助。Great@Nayan Wadekar。谢谢
@Stateless
class SomeBean {
@Inject
AsyncBean asyncBean;
@TransactionTimeout(value=5, unit= TimeUnit.MINUTES)
public void foo() {
asyncBean.lala()
}
}
@Stateless
class AsyncBean {
@Asynchronous
@TransactionTimeout(value=10, unit= TimeUnit.MINUTES)
public void lala() {
...
}
}