首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Cron4J环境下管理J2EE调度器

在Cron4J环境下管理J2EE调度器
EN

Stack Overflow用户
提问于 2015-07-08 18:55:59
回答 1查看 520关注 0票数 0

我的团队已经创建了一个web应用程序,我们希望它与一个任务调度程序相关联,如果通过web应用程序运行的任何项目都落后于计划,它将每天发送一次电子邮件。

我们正在使用的调度程序库Cron4j非常简单,目前我们正试图通过一组web服务调用来管理它,类似于这样(我们启动调度器并在指定的时间内运行,或者直到我们停止它):

代码语言:javascript
复制
public SchedulerResource(){
    s = new Scheduler();
}

@GET
@Path("start")
@Produces(MediaType.APPLICATION_JSON)
public Response invoke_workback_communicator() throws MalformedURLException   { 
    s.schedule("* * * * *", new Runnable() {
        public void run() { 
            WorkbackCommunicator communicator = new WorkbackCommunicator();
            communicator.run();
        }
    });

    s.start();

    try {
        Thread.sleep(1000L * 60L * 2L);
    } catch (InterruptedException e) {
        ;
    }
    s.stop();

    return Response.noContent().build();
}   

@GET
@Path("stop")
@Produces(MediaType.APPLICATION_JSON)
public Response stop_workback_communicator() throws MalformedURLException { 
    s.stop();
    return Response.noContent().build();
}

目前,'invoke_workback‘方法工作良好,'stop_workback’方法不起作用。

我好奇的是:

  • 调用web服务中的调度程序是否像这种糟糕的做法?
  • 如果是这样,如何有效地完成此功能?
  • 如果没有,我如何才能创建管理调度程序实例的服务接口?这有必要吗?

编辑:

进一步研究了这个问题,我注意到有一种叫做“ServletContextListener”的东西,它可以用来在服务器启动和关闭时启动或关闭调度程序。所以我现在想的是测试这个功能,并保留我们的服务,这样我们就可以在应用程序还在运行时管理调度器了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-09 19:45:07

我仍然对这个主题的一些外部观点感兴趣,但是我们确实找到了一个解决方案,它看起来会很好地工作。我们所做的是实现一个'ServletContextListener‘,它在上下文启动时、服务器启动时启动调度程序,并在服务器停止时在上下文破坏时停止调度程序。

我们只需将侦听器作为一个条目添加到项目的web.xml文件夹中的web.xml文件中:

代码语言:javascript
复制
<listener>
    <listener-class>com.mmm.marketing.utils.SchedulerServletContextListener</listener-class>
</listener>

我们还编写了一个web服务,如果我们愿意的话,它将允许我们停止并手动启动调度程序单例。

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

https://stackoverflow.com/questions/31301353

复制
相关文章

相似问题

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