首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >EJB3计时器在Wildfly服务器中不起作用

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

Stack Overflow用户
提问于 2014-11-02 09:11:06
回答 2查看 4.1K关注 0票数 1

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

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

代码语言:javascript
复制
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项目中也不起作用,因为我添加了以下依赖项:

代码语言:javascript
复制
<dependency>
    <groupId>org.jboss.spec.javax.ejb</groupId>
    <artifactId>jboss-ejb-api_3.1_spec</artifactId>
    <scope>provided</scope>
</dependency>  

我遗漏了什么?

编辑:更新我的代码以导入javax.annotation.PostConstruct;导入javax.ejb.Schedule;导入javax.ejb.Singleton;导入javax.ejb.Startup;

代码语言:javascript
复制
@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信息stdout时间: 1414903695150

代码语言:javascript
复制
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"

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-02 10:33:22

您的示例与Adam提供的示例之间有一个细微但重要的区别。

他的示例使用了EJB,而您的示例是@ @Singleton

不同之处在于Adam的示例将自动启动,而您的示例只有在您创建它的实例后才会启动。

票数 4
EN

Stack Overflow用户

发布于 2017-06-29 15:59:00

2017年访问这篇文章的人。我刚刚在Wildfly 10中使用@Stateless实现了这一特性,它的工作方式与EJB行为的预期一致。

示例:

代码语言:javascript
复制
@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 =======================");
  }
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26695018

复制
相关文章

相似问题

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