在Websphere上设置的事务超时

时间:2020-05-29 12:51:05

标签: transactions ejb websphere settimeout

我在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();
    }
}

1 个答案:

答案 0 :(得分:0)

不幸的是,您的两个要求(在代码中设置事务超时,以及使用容器管理的事务)是不兼容的,因此这是不可能的。为了使代码设置事务超时,您需要使用Bean管理的事务,在这种情况下,可以在开始事务之前使用ejbContext.getUserTransaction().setTransactionTimeout(seconds)。对于容器管理的事务,在容器进入您的方法时事务已经由容器启动,现在更改其超时为时已晚。

相关问题