0

需要“等待”数据的 ejb 的最佳解决方案是什么?我有一个 ejb 去检查数据库表中的一些数据,如果数据不存在,它需要等待 x 秒并再次检查。我知道在 Java EE 规范中不建议使用 Thread.sleep/Thread.wait 和此类操作。然而,这个问题必须有一个现实的解决方案。其他一些阅读建议您必须启动计时器或其他东西,但是我确实需要阻止请求调用,直到该数据可用,这消除了计划或计时器解决方案。还有其他想法吗?

4

1 回答 1

2

您可以使用 EJB Timer 来执行此操作,但老实说,“轮询”数据是一种资源浪费。更好的方法是使用 JMS。您是否让数据的生产者将数据放入数据库中,然后将消息放入队列中。消息和数据库写入都将在同一个事务中一起提交。之后您所做的就是在 JMS 队列上设置一个侦听器,该侦听器在消息到达时触发。就这样,不需要“轮询”。

如果您需要具体示例,请告诉我,我可以稍微扩展一下答案。

于 2013-04-23T20:09:19.783 回答