Websphere上的事务超时设置

问题描述 投票:0回答:1

我在Websphere应用程序服务器上工作,如下面的代码所示,这是简单的网关Bean,我从另一个具有查找功能的方法中调用dispatcherRequest方法,但是每次调用时事务都会启动,但是事务超时在Websphere上设置了默认值。我想用代码更改超时时间,我想提到我们必须使用容器事务管理。

@Stateless(name = "EJBGatewayServiceCMT")
public class EJBGatewayServiceBean implements EJBGatewayService {

@Resource
private SessionContext ctx;


@Override
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public void dispachRequestObject(Object inputData, Object outputData, Dispacher dispacher) {
    try {
        dispacher.doDispach(inputData, outputData);
    } catch (Throwable t) {
        ctx.setRollbackOnly();
    }
}
transactions ejb websphere settimeout
1个回答
0
投票
不幸的是,您的两个要求(在代码中设置事务超时,以及使用容器管理的事务)是不兼容的,因此这是不可能的。为了使代码设置事务超时,您需要使用Bean管理的事务,在这种情况下,可以在开始事务之前使用ejbContext.getUserTransaction().setTransactionTimeout(seconds)。对于容器管理的事务,该事务在进入您的方法时已经由容器启动,现在更改其超时为时已晚。
© www.soinside.com 2019 - 2024. All rights reserved.