gpt4 book ai didi

timer - 跨重新部署的 JEE6 计时器持久性

转载 作者:行者123 更新时间:2023-12-04 06:09:35 25 4
gpt4 key购买 nike

我正在开发的应用程序的任务之一是备份系统上运行的其他应用程序的数据。我想安排这个备份过程,以便它可以在无人看管的情况下运行。我正在使用 JEE6/EJB3.1 Timer 实用程序。

我有一个 BackupConfiguration 类,我使用 JPA2 将它持久化到一个数据库中,它有一个 TimerHandle 类型的字段。如果用户决定安排备份,我会创建一个新的持久性计时器并填充 TimerHandle 字段。

如果我重新启动服务器,一切都很好,计时器会重新启动(并且所有计时器都立即触发,因此会出现短暂的 panic ,叹气)并且一切都与我离开时一样。

如果我重新部署应用程序(在我开发它时经常发生这种情况),所有计时器都会丢失!我愚蠢地认为计时器会与服务器相关联,但事实证明它们与应用程序相关联。

所以,我的问题是,让计时器在重新部署时保持不变的最佳方法是什么?

我能看到的唯一解决方案是将 ScheduleExpression 以及 TimerHandle 与备份配置一起存储。然后,如果我有一个句柄但没有计时器,我会重新创建计时器。主要问题是这意味着每次应用程序开始查找是否缺少计时器时都要枚举每个计划的实体。目前这不是很多工作,但在 future 可能会增长为巨大的成本。

最佳答案

对于 GlassFish,有 --keepstate=true asadmin redeploy 的选项命令。
它在重新部署之间保留 EJB 计时器。
有关详细信息,您可以查看:
http://docs.oracle.com/cd/E18930_01/html/821-2418/beahw.html
http://docs.oracle.com/cd/E18930_01/html/821-2416/ggndx.html#SJSASEEAGgkudf
http://docs.oracle.com/cd/E18930_01/html/821-2433/redeploy-1.html#scrolltoc

关于timer - 跨重新部署的 JEE6 计时器持久性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7930420/

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