Jakarta ee 使用有状态ejb的TimerService解决方案

Jakarta ee 使用有状态ejb的TimerService解决方案,jakarta-ee,timer,ejb,Jakarta Ee,Timer,Ejb,我有状态ejb用于订票。我想实现一个功能,如果用户选择了票,但没有为他们付费,这将为他保留一段特定的时间,比如说10分钟。所以我实现了当用户提交选择的票时,他们将从可用票的数据库中删除。现在我需要设置一个计时器,在超时时检查是否付款(可以通过数据库),如果没有,则将这些票据返回数据库 我会在EJBfortickets订单中这样做,但它是有状态的,EJBTimer服务不支持有状态bean。你建议怎么做 是否可以将处理超时的任务委托给分离的无状态bean?在这种情况下,它将只有创建计时器的方法和带有

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

我会在EJBfortickets订单中这样做,但它是有状态的,EJBTimer服务不支持有状态bean。你建议怎么做

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

另外,我用的是glassfish 3.1


感谢您的帮助。

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

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

createTimer(长持续时间,可序列化信息)

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

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