从@OnApplicationStart作业启动作业是否可以?

时间:2011-12-19 09:48:17

标签: playframework jobs

从这样的工作,我正在做:

@OnApplicationStart
public class Bootstrap extends Job {
  Foo foo = new Job<Foo>() {
    ...
    return new Foo();
  }.now().get();
}

我发现内部作业永远不会被执行,导致应用程序陷入僵局,因为它会阻塞get()

我在开发模式下运行Play 1.2.4。作业提交到JobsPlugins.executor,初始化为10个主题 - 绰绰有余。我尝试在Job.now()内的Callable中放置一个断点 - 断点永远不会被击中。

1 个答案:

答案 0 :(得分:2)

是的,它得到支持并且效果很好。这样做的原因之一可能是控制作业执行的顺序。

对于我的应用程序,只有 BootstrapJob 使用 @OnApplicationStart 进行注释并控制执行顺序

public void doJob() {

    if (User.count() == 0)
        Fixtures.loadModels("user-data.yml");

    Logger.info("Starting synchronous jobs.");
    new StaticDataJob().doJob();

    Logger.info("Starting asynchronous jobs.");
    new TransactionJob().now();
    new ReportJob().now();

        Logger.info("Boostrap job complete.");
}