再生中にスケジュールされたジョブを開始する

私はこのようなクラスを持っています:

package jobs;

import play.jobs.Every;
import play.jobs.Job;

@Every("5s")
public class ScheduledJobs extends Job{

    @Override
    public void doJob(){
        System.out.println("Job's done");
    }

}

configファイルには次のものが含まれています:

#Jobs executor
# ~~~~~~
# Size of the Jobs pool
play.jobs.pool=10

# Execution pool
# ~~~~~
# Default to 1 thread in DEV mode or (nb processors + 1) threads in PROD mode.
# Try to keep a low as possible. 1 thread will serialize all requests (very useful for  debugging purpose)
# play.pool=3

私の質問は、5秒ごとにこの仕事を始めるにはどうしたらいいですか? ScheduledJobsインスタンスを作成してdoJobを呼び出すと、一度だけ実行されます。ご協力ありがとうございました。

編集:

ScheduledJobsは私のappディレクトリのjobsパッケージに置かれています。

新しい ScheduledJobs()。now()<@OnApplicationStar を呼び出すと、ジョブは実行されませんが、/code> play.jobs.Job.java行64でnullポインタ例外が発生します(Play 1.2.3)。 私はすぐにこの問題を解決する必要があります。私を助けてください。

1

1 答え

コードを呼び出す必要はありません。サーバーへの最初のWebリクエストを作成した後(DEVモードの場合)、5秒ごとにジョブの実行が開始されます。

1
追加された
再生ステータスを確認して、このジョブが実行中かどうかを確認できます。
追加された 著者 James,
prodモードでは、私は最初の要求を待つべきではありません。代わりに @On アノテーションを使用するように @Every を変更できますか? @On( "0 * * * *?")
追加された 著者 grahamrb,
私はアイデアがなくなり、あなたが好きならモジュールをアップロードして、実際のコードを見ることができます。
追加された 著者 grahamrb,
ありがとう。 "application.mode = dev"は私のconfファイルにあります。とにかくprodモードではどうなりますか?しかし、私の仕事がサーバに初めてリクエストされたときにはまだ始まっていません。
追加された 著者 Gabor Peto,
そのジェームズはどこですか? Grahamrb私はあなたが言ったことを試みましたが、まだ何もしませんでした。
追加された 著者 Gabor Peto,
私はこの問題をまだ解決できませんでした。誰か助けてくれますか?
追加された 著者 Gabor Peto,