【问题标题】:TimeOut for EJB method callsEJB 方法调用的超时
【发布时间】:2014-07-23 07:25:00
【问题描述】:

嘿, 有没有一种方法可以强制 EJB 方法停止处理并将控制权返回给调用者并出现异常?

在我的应用程序中,我多次调用远程 ejb,如下所示:

@Stateless      
public class ClassSB implements ClassLocalISB {

@Override
public List<Object> businessMethod(String value) {
        long start = 0;
        try {
            //CALL TO EJB
            retVal = ejb.search(value);

            }
        } catch (Exception e) {

            throw new RuntimeException(e);
        }
    }
 }
}

现在,对于性能问题,我需要停止执行

ejb.search(值)

如果花费的时间太长,在这种情况下,我会向调用者抛出应用程序异常。 我知道TimerService 接口允许创建一个计时器,但我不能在超时时完全抛出异常,除此之外,EJB 方法似乎还在继续处理。

【问题讨论】:

  • 你使用的是哪台服务器?

标签: jakarta-ee timer timeout ejb


【解决方案1】:

Glassfish 以及 Weblogic 以及可能的其他容器都具有此功能:

要实现同步 RMI 超时,请使用 remote-client-timeout weblogic-ejb-jar.xml 中的部署描述符元素

但请务必阅读 documentation 和使用 RMI 超时指南。

【讨论】:

  • thanksss...我会证明...但是如果我使用 @TransactionTimeoutSeconds 代替呢?
  • 一个可行的解决方案,但我相信每一行代码/配置都必须有确切的含义,所以它可能取决于你的意图 - 你想以特定方式管理事务还是管理远程 EJB 调用。除非你不喜欢部署描述符,但我不喜欢混合配置和逻辑;]
猜你喜欢
  • 1970-01-01
  • 2012-02-13
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
  • 2014-08-23
  • 2013-05-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多