【问题标题】:What is a proper way to start scheduled task on Java EE 5 (JBoss) platform?在 Java EE 5(JBoss)平台上启动计划任务的正确方法是什么?
【发布时间】:2012-08-24 09:47:06
【问题描述】:

我需要运行一个简单的计划任务,该任务将每 200 毫秒启动一次并执行一些简单的操作。

Executors.newSingleThreadScheduledExecutor() 是在 JBoss 上获取预定执行器服务的正确方法吗?

据说不推荐在 Java EE 平台上生成非托管线程。看来这个线程将是一个不受管理的线程。

另一方面,我不想为这么简单的事情声明 MBean 等。

编辑

org.jboss.resource.work.JBossWorkManager 之类的东西,但我找不到计划工作的示例。

【问题讨论】:

  • 你在使用 Spring 吗?
  • 不,它只是 Java EE 5 + Seam(旧)

标签: java jboss java-ee-5


【解决方案1】:

调用Executors.newSingleThreadScheduledExecutor() 并不可怕,但最好避免在 EE 容器中使用它。在 Java EE 5 中use TimeoutService

@Stateless
public class TimerSessionBean implements TimerSession {
    @Resource
    TimerService timerService;

    public void startTimer() {
        Timer timer = timerService.createTimer(200, "Created new timer");
    }

    @Timeout
    public void timeout(Timer timer) {
        logger.info("Timeout occurred");
    }
}

在 Java EE 6 中,您可以方便地使用 @Schedule annotation

【讨论】:

  • 没有 EJB 就没有办法正确地做到这一点吗? (我在 JBoss 4.x 上,距离 Java EE 6 还很远)
  • @PiotrGwiazda: TimerService 是在 EJB 2.1 中引入的,所以在 JBoss 4.x 上应该没问题。
猜你喜欢
  • 2012-11-14
  • 1970-01-01
  • 2013-02-05
  • 2016-07-11
  • 1970-01-01
  • 2011-08-01
  • 1970-01-01
  • 2015-08-14
相关资源
最近更新 更多