EJB3计时器在Wildfly服务器中不起作用

时间:2014-11-02 01:11:06

标签: java ejb-3.1 wildfly-8

我正在尝试在EJB3中创建一个简单的计时器,示例来自: http://www.adam-bien.com/roller/abien/entry/simplest_possible_ejb_3_16

我在eclipse中创建了一个动态Web项目并添加了以下代码。我没有看到任何输出

import javax.ejb.Schedule;
import javax.ejb.Stateless;

@Stateless
public class ShowCurrentTime {

    @Schedule(second="*/1", minute="*",hour="*")
    public void showTime() {
        System.out.println("Time : " + System.currentTimeMillis());
    }

}

这在我添加了以下依赖项的maven项目中也无效:

<dependency>
    <groupId>org.jboss.spec.javax.ejb</groupId>
    <artifactId>jboss-ejb-api_3.1_spec</artifactId>
    <scope>provided</scope>
</dependency>  

我错过了什么?

编辑: 更新了我的代码     import javax.annotation.PostConstruct;     import javax.ejb.Schedule;     import javax.ejb.Singleton;     import javax.ejb.Startup;

@Singleton
@Startup
public class ShowCurrentTime {

    @Schedule(second="*/1", minute="*", hour="*", persistent = false)
    public void showTime() {
        System.out.println("Time : " + System.currentTimeMillis());
    }

    @PostConstruct
    public void applicationStartup() {
        showTime();
    }

}

我在输出中看到的只是初始打印     00:48:15,150 INFO [stdout](ServerService线程池 - 882)时间:1414903695150

00:48:15,167 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-7) JBAS017534:     Registered web context: /Test-DWP
00:48:15,202 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS018565: Replaced    deployment "Test-DWP.war" with deployment "Test-DWP.war"

编辑: 更改为Singleton并清理部署目录并重新部署应用程序。

2 个答案:

答案 0 :(得分:4)

对于2017年访问此帖子的人。我刚刚使用@Stateless在Wildfly 10中实现了此功能,它确实可以像EJB行为一样工作。

示例:

@Stateless
public class SchedulerInvoice {

@Schedule(dayOfWeek = "*", hour = "*", minute = "*/2", second = "0", persistent = false)
public void invoiceJobHourly() {
    System.out.println("====================== INVOICE JOB START =======================");
    System.out.println("====================== INVOICE JOB END =======================");
  }
}

答案 1 :(得分:3)

你的例子与亚当提出的例子有一个微妙但重要的区别。

他的示例使用@Singleton EJB,你的是@Stateless。

差异意味着Adam的示例将自行启动,而您的示例将在您创建它的实例之后才会启动。