2

我有用于门票订单的有状态 ejb。我想实现一个功能,如果用户选择票但不支付票,则为他保留特定时间段,比如 10 分钟。所以我实现了当用户提交票证选择时,它们会从可用票证数据库中删除。现在我需要设置一个计时器,在超时时将检查是否付款(可以通过数据库),如果没有 - 将这些票返回到数据库。

我会在 ejb 中为门票订单这样做,但它是有状态的,并且 EJBTimer 服务不支持有状态的 bean。你建议怎么做?

是否可以将处理超时的任务委托给分离无状态bean?在这种情况下,它将只有创建计时器的方法和使用@Timeout 注释的方法。我不知道如何将有关所选票证的所有详细信息传递给无状态 bean,因为它们不能作为 bean 属性保存(因为 bean 是无状态的)。我只能将它们传递给创建计时器的方法,但它们必须在超时调用的方法中使用。

PS我使用的是glassfish 3.1

感谢您的任何帮助。

4

1 回答 1

2

您可以通过在创建计时器时传递信息来将详细信息传递给超时方法。

您可以传递序列化对象 - 适当的数据结构来保存票证信息,或者可以更改现有类以实现Serializable接口。

createTimer(long duration, Serializable info)

现在,在超时时间过后,您可以info通过调用对象在超时方法getInfo()中获取此Timer对象。

[还有其他方法可以使用不同的签名来创建计时器]

于 2013-10-30T10:00:35.937 回答