@Schedule 注解的方法未被调度
Method annotated with @Schedule is not scheduled
我正在尝试使用 ejb3.1 创建一个简单的计时器作业来进行一些清理工作。我的豆子看起来像这样:
@Singleton
@Startup
public class ExpirationSchedulerBean {
private final Logger logger = Logger.getLogger(ExpirationSchedulerBean.class);
@Schedule(second = "*/5", minute = "*", hour = "*", persistent = false)
public void cleanup() {
logger.warn("Schedule Timer fired - " + new Date());
}
@PostConstruct
public void startup() {
logger.warn("I AM IN STARTUP()");
}
}
我的日志文件显示记录器没有任何问题,因为 "I AM IN STARTUP()" 打印正常。但是,预定的方法永远不会 运行.
我尝试创建一个 Timer
,使用:
@Resource
private TimerService timerService;
@PostConstruct
public void startup() {
logger.warn("I AM IN STARTUP()");
timerService.createIntervalTimer(0, 5000, new TimerConfig());
}
@Timeout
public void sayHello() {
logger.warn("Timeout from timer "+new Date());
}
但服务器似乎也不喜欢这样,我得到 JBAS014239:定时器服务已被禁用。请在服务器配置的 ejb 部分添加一个条目以启用它。 如何每五秒将标记为 @Schedule
的方法获取到 运行?
编辑:我使用 JBoss 6.4
正如@spa 提到的那样,问题是我的配置缺少必要的依赖项。 @Schedule
-注释使用 timer-service,因此我需要将以下内容添加到我的 standalone.xml:
<timer-service thread-pool-name="default">
<data-store path="timer-service-data" relative-to="jboss.server.data.dir"/>
</timer-service>
没有依赖项,它会默默地失败,使问题很难找到。
我正在尝试使用 ejb3.1 创建一个简单的计时器作业来进行一些清理工作。我的豆子看起来像这样:
@Singleton
@Startup
public class ExpirationSchedulerBean {
private final Logger logger = Logger.getLogger(ExpirationSchedulerBean.class);
@Schedule(second = "*/5", minute = "*", hour = "*", persistent = false)
public void cleanup() {
logger.warn("Schedule Timer fired - " + new Date());
}
@PostConstruct
public void startup() {
logger.warn("I AM IN STARTUP()");
}
}
我的日志文件显示记录器没有任何问题,因为 "I AM IN STARTUP()" 打印正常。但是,预定的方法永远不会 运行.
我尝试创建一个 Timer
,使用:
@Resource
private TimerService timerService;
@PostConstruct
public void startup() {
logger.warn("I AM IN STARTUP()");
timerService.createIntervalTimer(0, 5000, new TimerConfig());
}
@Timeout
public void sayHello() {
logger.warn("Timeout from timer "+new Date());
}
但服务器似乎也不喜欢这样,我得到 JBAS014239:定时器服务已被禁用。请在服务器配置的 ejb 部分添加一个条目以启用它。 如何每五秒将标记为 @Schedule
的方法获取到 运行?
编辑:我使用 JBoss 6.4
正如@spa 提到的那样,问题是我的配置缺少必要的依赖项。 @Schedule
-注释使用 timer-service,因此我需要将以下内容添加到我的 standalone.xml:
<timer-service thread-pool-name="default">
<data-store path="timer-service-data" relative-to="jboss.server.data.dir"/>
</timer-service>
没有依赖项,它会默默地失败,使问题很难找到。