【问题标题】:Creating Scheduler on postconstruct method on application scoped bean在应用程序范围 bean 上的 postconstruct 方法上创建调度程序
【发布时间】:2015-04-18 11:58:36
【问题描述】:

在 ApplicationScoped bean 的 PostConstruct 方法上创建 Scheduler 作业是否有效。

@ApplicationScoped
public class myBean {

    private String name = "Soup of the day";

    @Schedule(hour="0", persistent=false)
    @PostConstruct
    public void afterCreate() {
        System.out.println("Bean Created");
    }

    public String getName() {
        return name;
    }

    public void setName(String name){
        this.name = name;
    }
}

【问题讨论】:

  • 你想通过这个实现的目标是什么?
  • 你会在构造函数和定时器调用函数。
  • @AlexNevidomsky。感谢回复。我有一些数据库调用。我正在尝试在应用程序启动时以及每晚运行它们。于是想到了这个办法。你能帮我吗
  • 我不明白,为什么你不能让 afterCreate() 和 onTimer() 函数都调用 databaseCall() 来完成这项工作(而不是在 afterCreate() 上放置两个注释) ?
  • 这是一个按照你的方式做的例子:stackoverflow.com/questions/8482764/using-ejb-timer-service

标签: java scheduled-tasks cdi java-ee-7


【解决方案1】:

带有@Startup 注释(在类上)和@Schedule 注释(在方法上)的@Singleton EJB 就足够了。您不需要使用@PostConstruct,因为这会迫使您在某个地方注入 Singleton EJB 实例(我假设在您的用例中这是不可能的)

【讨论】:

    猜你喜欢
    • 2020-11-01
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 2016-02-18
    • 1970-01-01
    • 2012-04-16
    相关资源
    最近更新 更多