当前位置: 首页 > 知识库问答 >
问题:

如何用EJB实现一个永久的后台进程?

雷硕
2023-03-14

我有一个关于EJB中通用设计模式的问题。我有一个Java EE应用程序(EJB和Web)和我需要一种后台进程是永久扫描和处理特定的数据通过JPA。

@Singleton
@Startup
public class MyUpdateService {
    @PostConstruct
    void init() {
        while(true) {
            // scann for new data...
            // do the job.....
        }
    }
}

在EJB中,还有其他模式,如@TimerService和新的JavaEE7批处理。但这两个概念--我认为--都用于有限过程?

共有1个答案

鱼渝
2023-03-14

在当前项目中使用EJB TimerService完成定期数据修剪或后端数据同步等任务。它不仅允许单次执行,而且还允许间隔计时器和基于日历的时间表的计时器。

Smth类:

@Startup
@Singleton
public class SyncTimer {
    private static final long HOUR = 60 * 60 * 1000L;

    @Resource
    private TimerService timerService;
    private Timer timer;

    @PostConstruct
    public void init() {
        TimerConfig config = new TimerConfig();
        config.setPersistent(false);
        timer = timerService.createIntervalTimer(HOUR, HOUR, config);
    }

    @Timeout
    private synchronized void onTimer() {
        // every hour action
    }
}
 类似资料:
  • 问题内容: 我通过SSH连接到远程服务器。然后,我使用Forever启动我的node.js应用程序。一切正常,直到关闭控制台窗口。即使通过ssh关闭连接,如何在远程服务器上永远运行node.js应用程序?我只想启动一个应用程序,然后关闭计算机。我的应用程序应在远程服务器的后台运行。 问题答案: 您可能还需要考虑使用upstart实用程序。它将允许您像服务一样启动,停止和重新启动节点应用程序。可以将

  • 我正在运行RHEL6,我导出了一个环境变量,如下所示: 该变量在终端关闭时丢失。我如何永久地添加它,使这个变量值始终存在于特定的用户中?

  • 问题内容: ThreadLocal如何实现?它是用Java实现的(使用从ThreadID到对象的一些并发映射),还是使用一些JVM挂钩来更有效地实现它? 问题答案: 这里的所有答案都是正确的,但是有些令人失望,因为它们多少掩盖了聪明的实现是多么的明智。我只是在寻找源代码,并且对它的实现方式印象深刻。 天真的实现 如果我要求您在javadoc中描述的给定API的基础上实现一个类,该怎么办?最初的实现

  • 您从网上下载的是网络版是试用版,试用期有62天,10个并发连接。如果您想注册成正式版,请按如下步骤进行。 1、 与E立方管理平台官网上的在线客服联系,商定合同、汇款等。 2、 用户填写注册信息并导出生成注册申请文件,然后通过QQ或电子邮件发送到E立方管理平台服务团队。 操作方法: 如下图所示: 先打开“系统设置工具”(该程序在中间件服务器上),并切换到“注册”页面,如下图所示: 这时窗体右下角显示

  • 问题内容: 我通过腻子SSH连接到linux服务器。我试图将其作为这样的后台进程运行: 但是,在2.5小时后,终端变为非活动状态,该过程终止。无论如何,即使在终端断开连接的情况下,我仍然可以保持该过程正常进行吗? 编辑1 实际上,我尝试过,但是一旦关闭Putty SSH终端或拔出Internet插头,服务器进程就会立即停止。 在腻子里我有什么需要做的吗? 编辑2(2012年2月) 永远有一个模块。

  • 我想创建一个的,在我关闭Powershell的当前会话后不会过期,假设我有这个别名: 这完美地创建了别名,但我想在关闭当前会话后使用它,我如何才能实现这一点。 注: PowerShell帮助系统建议我可以导出我创建的别名,并在下次打开新会话时导入它们,实际上这并不是我想要的,因为,在我通过不同会话创建别名后,有没有直接明确的方法保持别名