我两次从我的代码中点击一个web服务。第一个命中给我一个product_ID,使用它作为路径参数我进行第二次调用,它给出了响应。
问题是第二次(GET)调用应该在第一次(POST)调用后2秒钟内被调用。我在我的项目中使用EJB,最简单的解决方案是使用Thread.sleep(2000)。但EJB不建议程序员自己管理线程。
在我的研究中,我发现了一个可能的解决方案,但由于我缺乏EJB技能,我无法理解它。有人可以指导我解决这个问题。
可能的解决方案的URL是:Using the EJB3 timer service instead of Thread.sleep()
答案 0 :(得分:3)
在第一次通话的方法中,您应该在第一次通话后创建一个程序化单动作计时器,延迟时间为2秒。
Timer timer = timerService.createSingleActionTimer(2000, new TimerConfig(product_ID, true));
当程序计时器到期(熄灭)时,容器调用bean实现类中带注释的@Timeout方法。 @Timeout方法包含处理定时事件的业务逻辑。
@Timeout
public void handleTimerEvent(Timer timer) {
String productId = timer.getInfo();
someMethodWithDoSecondCallLogic(productInfo)
}
参考: