Playframework 从@OnApplicationStart作业启动作业可以吗?

Playframework 从@OnApplicationStart作业启动作业可以吗?,playframework,jobs,Playframework,Jobs,从这样的工作中,我正在做: @OnApplicationStart public class Bootstrap extends Job { Foo foo = new Job<Foo>() { ... return new Foo(); }.now().get(); } @OnApplicationStart 公共类引导扩展作业{ Foo Foo=新作业(){ ... 返回新的Foo(); }.now().get(); } 我发现内部作业从未执行过,导致

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

@OnApplicationStart
public class Bootstrap extends Job {
  Foo foo = new Job<Foo>() {
    ...
    return new Foo();
  }.now().get();
}
@OnApplicationStart
公共类引导扩展作业{
Foo Foo=新作业(){
...
返回新的Foo();
}.now().get();
}
我发现内部作业从未执行过,导致应用程序死锁,因为它阻塞了
get()


我正在开发模式下运行Play1.2.4。作业被提交到
JobsPlugins.executor
,该执行器被初始化为有10个线程-足够了。我尝试在
作业中的可调用内部设置断点。now()
-该断点从未被命中。

是的,它受支持并且工作正常。这样做的原因之一可能是为了控制作业的执行顺序

对于我的应用程序,只有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.");
}

为什么你在一份工作中有一份工作?为什么不在两份工作上加上注释@onapplicationstart@Codemwnci-我试图重用一段已经作为作业编写并在其他地方使用的代码。作为一种解决方法,我将通用逻辑提取到一个普通方法,而不是一个作业,因此我实现了这一点——不过,我想知道是否支持从另一个作业(特别是在启动时)调用作业,或者如果不支持,为什么不支持。如果在调用作业后添加
.get()
,是否会遇到与我相同的挂起问题?我知道我可以调用doJob()跳过整个异步问题,只是想知道。