【问题标题】:Transaction timeout set on WebsphereWebsphere 上设置的事务超时
【发布时间】:2020-09-17 01:15:39
【问题描述】:

我在 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】:

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

    【讨论】:

      猜你喜欢
      • 2016-08-13
      • 2019-05-17
      • 1970-01-01
      • 2011-01-12
      • 2020-05-27
      • 2023-03-15
      • 1970-01-01
      • 2015-03-21
      • 2019-09-09
      相关资源
      最近更新 更多