首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java单例调度任务执行两次

Java单例调度任务执行两次
EN

Stack Overflow用户
提问于 2013-10-21 08:32:09
回答 2查看 1.2K关注 0票数 0

我想在预定时间执行两个任务(23:59 CET和08:00 CET)。我已经创建了一个EJB单例bean来维护这些方法:

代码语言:javascript
复制
@Singleton
public class OfferManager {

    @Schedule(hour = "23", minute = "59", timezone = "CET")
    @AccessTimeout(value = 0) // concurrent access is not permitted
    public void fetchNewOffers() {
        Logger.getLogger(OfferManager.class.getName()).log(Level.INFO, "Fetching new offers started");

        // ...

        Logger.getLogger(OfferManager.class.getName()).log(Level.INFO, "Fetching new offers finished");
    }

    @Schedule(hour="8", minute = "0", timezone = "CET")
    public void sendMailsWithReports() {
        Logger.getLogger(OfferManager.class.getName()).log(Level.INFO, "Generating reports started");

        // ...

        Logger.getLogger(OfferManager.class.getName()).log(Level.INFO, "Generating reports finished");
    }
}

问题是这两个任务都执行了两次。服务器是WildFly Beta1,按UTC时间配置。

以下是一些可能有用的服务器日志:

代码语言:javascript
复制
2013-10-20 11:15:17,684 INFO  [org.jboss.as.server] (XNIO-1 task-7) JBAS018559: Deployed "crawler-0.3.war" (runtime-name : "crawler-0.3.war")
2013-10-20 21:59:00,070 INFO  [com.indeed.control.OfferManager] (EJB default - 1) Fetching new offers started
....
2013-10-20 22:03:48,608 INFO  [com.indeed.control.OfferManager] (EJB default - 1) Fetching new offers finished
2013-10-20 23:59:00,009 INFO  [com.indeed.control.OfferManager] (EJB default - 2) Fetching new offers started
....
2013-10-20 23:59:22,279 INFO  [com.indeed.control.OfferManager] (EJB default - 2) Fetching new offers finished

造成这种行为的原因可能是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-22 08:22:15

我解决了使用服务器时间(UTC)指定计划时间的问题。所以

代码语言:javascript
复制
@Schedule(hour = "23", minute = "59", timezone = "CET")

改为:

代码语言:javascript
复制
@Schedule(hour = "21", minute = "59")

我不知道这种行为的原因,也许早期释放野蝇才是问题所在。

票数 1
EN

Stack Overflow用户

发布于 2018-02-04 08:43:58

我对TomEE羽流7.0.4也有同样的问题。在我的例子中,解决方案是将@Singleton更改为@Stateless

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19489568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档