如何运行一个bean作为后台服务?
How to run a bean as a background service?
我需要能够在启动时启动一个 bean,并使用某种内部 event/time 循环(寻找要处理的数据记录)使它 运行 一直在后台运行。我想知道正确的 Java EE 7/ JBoss EAP 6.2 方法是什么。
有什么想法吗?
使用 Quartz Scheduler 框架并按照配置启动作业。
这取决于你想达到什么目的。您可以通过多种方式实现既定目标。我能想到的一些是:-
1)使用spring在启动时自动实例化单例bean并在启动时调用init方法
2)在web应用方面,可以使用loadOnstartUp servlet配置
3)使用 quarts 作业 运行 后台作业
EJB 在这种情况下应该可以正常工作(标准 Java EE - 不需要外部框架)
我假设您需要 'pull' 数据模式,而不是 'listen' 数据事件组件
- 启动单例 EJB
编写查询数据存储库的业务逻辑
@单例
@Startup //容器在启动时或应用程序部署时初始化bean
public class MySingletonEJB{
@Schedule //根据所需的时间表配置此注释,例如通过类似 Cron 的语法
public void executeJob(){
//.... 搜索数据记录
}
}
我需要能够在启动时启动一个 bean,并使用某种内部 event/time 循环(寻找要处理的数据记录)使它 运行 一直在后台运行。我想知道正确的 Java EE 7/ JBoss EAP 6.2 方法是什么。
有什么想法吗?
使用 Quartz Scheduler 框架并按照配置启动作业。
这取决于你想达到什么目的。您可以通过多种方式实现既定目标。我能想到的一些是:-
1)使用spring在启动时自动实例化单例bean并在启动时调用init方法
2)在web应用方面,可以使用loadOnstartUp servlet配置
3)使用 quarts 作业 运行 后台作业
EJB 在这种情况下应该可以正常工作(标准 Java EE - 不需要外部框架)
我假设您需要 'pull' 数据模式,而不是 'listen' 数据事件组件
- 启动单例 EJB
编写查询数据存储库的业务逻辑
@单例 @Startup //容器在启动时或应用程序部署时初始化bean public class MySingletonEJB{
@Schedule //根据所需的时间表配置此注释,例如通过类似 Cron 的语法 public void executeJob(){ //.... 搜索数据记录 }
}