gpt4 book ai didi

java - 根据规范,EJB 计时器调用是否可以与指定计时器重叠?

转载 作者:行者123 更新时间:2023-11-30 09:18:00 31 4
gpt4 key购买 nike

如果我定义了一个 EJB 计时器(准确地说是 EJB 3.0),它按间隔重复运行,并且单次调用时间比间隔长,容器是否会

  • 与第一次调用同时运行超时方法
  • 还是等到调用完成
  • 或者是否会放弃第二次调用
  • 还是会发生其他事情?

它是在 EJB 规范中指定的还是依赖于应用程序服务器的?我对 JBoss 5.1 的行为特别感兴趣。

最好的问候,

普热梅克

最佳答案

简短的回答是,我不认为这是指定的。

长答案是,在查看 EJB 3.2 规范和 javax.ejb API 文档之前,我确信这是指定的,但我找不到任何明确说明的内容。规范很明确,如果单个超时失败,它必须至少重试一次(这会产生一个奇怪的场景,即“旧”超时在"new"超时成功后重试)并且如果容器/应用程序关闭当计时器应该触发时它需要触发至少一个“ catch ”,但我找不到任何关于重叠超时方法的内容。

我不知道 JBoss 做了什么,但对于找到这个答案的其他人,我知道 WebSphere Application Server 以“串行”方式为单个 Timer 实现超时回调。即单个Timer只能有一个outstanding timeout处于 Activity 状态,如果前一个仍在执行或重试,则不会发生后续超时回调。在延迟/重试超时完成后,服务器将立即触发“ catch ”超时。这种行为可以更明确地说明,但是 Creating timers using the EJB timer service for enterprise beans信息中心的主题在讨论重试时暗示了这种行为:

A missed execution is a timeout that must have been attempted, but was not, because the server was unavailable or busy retrying a previously failed timeout.

关于java - 根据规范,EJB 计时器调用是否可以与指定计时器重叠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18740220/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com