Play Framework (2.1~2.4) で作成したアプリでバッチを実行する。
modified: 2015-09-15
メリット
- 機能の再利用ができる。(特にORM)
- 新しいプロジェクトを作らなくて済む。
適当なクラス(例:batch/HogeMain.java)に main() 関数を作成し、以下のコマンドで実行できます。
開発環境の場合
$ activator "run-main batch.HogeMain"
デプロイ環境の場合
$ java -cp lib/* batch.HogeMain
ただしアプリが起動されていないと実行できない(ORMなど設定や状態に依存する)ものは例外を吐いたりします。その場合、以下のように Play を実行状態にしてあげれば良いようです。
Play 2.3 まで
Play.start(new play.api.DefaultApplication(new java.io.File("."), getClass.getClassLoader, None, Mode.Prod))
Play.start(new play.api.DefaultApplication(new java.io.File("."), getClass().getClassLoader(), null, Mode.Prod()));
Play 2.4 の場合
val env = new Environment(new java.io.File("."), getClass.getClassLoader, Mode.Prod)
val context = ApplicationLoader.createContext(env)
val loader = ApplicationLoader(context)
val app = loader.load(context)
Play.start(app);
参考にさせて頂きました! http://argius.hatenablog.jp/entry/20121011/1349953945