コンテンツにスキップ

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 まで

```scala:Scala Play.start(new play.api.DefaultApplication(new java.io.File("."), getClass.getClassLoader, None, Mode.Prod))

```java:Java
Play.start(new play.api.DefaultApplication(new java.io.File("."), getClass().getClassLoader(), null, Mode.Prod()));

Play 2.4 の場合

scala:Scala 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