【问题标题】:Deltaspike @Scheduled in jar fileDeltaspike @Scheduled 在 jar 文件中
【发布时间】:2018-10-16 13:42:05
【问题描述】:

我有一个 Web 应用程序(jee7,war,在 Wildfly 10 上运行)。

应用程序依赖于一个 jar 文件,其中包含不同项目中使用的 jpa 实体和服务。

我已根据文档将 Deltaspike Scheduler Module 添加到 jar 项目的 pom 文件中,但带有 @Scheduled 注释的 Jobs/Runnables 不会以所需的速率/时间执行,它们根本不会被执行。

当我在 war/main 项目中创建相同的注释类时,一切正常。

那么有没有办法告诉 Deltaspike 也考虑 jar 文件中的注释类?

【问题讨论】:

  • 罐子里的豆子有没有被检测到?也许是一些 beans.xml 问题
  • 是的,检测到 bean。注入 jar 定义的 bean 工作正常。

标签: jakarta-ee cdi deltaspike


【解决方案1】:

我终于明白了:

在工作期间:

@Scheduled(cronExpression = "0 0/1 * * * ?")
public class TimeLogger implements Job {

  @Inject
  private Logger logger;

  @Override
  public void execute(JobExecutionContext context) throws JobExecutionException {
    logger.info(new Date().toString());

  }
}

放在主项目时调度,放在jar文件时不调度。

要解决这个问题,我只需添加范围注释(@Dependend、@ApplicationScoped、...)。

所以我的库类现在看起来像:

@Dependent
@Scheduled(cronExpression = "0 0/1 * * * ?")
public class TimeLogger implements Job {

  @Inject
  private Logger logger;

  @Override
  public void execute(JobExecutionContext context) throws JobExecutionException {
    logger.info(new Date().toString());

  }
}

并且像魅力一样工作;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多