我在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();
}
}
ejbContext.getUserTransaction().setTransactionTimeout(seconds)
。对于容器管理的事务,该事务在进入您的方法时已经由容器启动,现在更改其超时为时已晚。