noteプログラミング関連2012-10-11Play2.0で作ったアプリの中にバッチ的コマンドラインアプリを組み込んでみるScalaPlay2.0で作ったWebアプリに付随するコマンドラインプログラム、いわゆるバッチ処理を、Play2.0の機能を使って実行してみようというものです。先進的なWebアプリフレームワークの使い方としてどうなの?という点は置いといて。batch.MyAppとすれば実行できます。applicationと怒られてしまいます。Playが開始状態になっていない、つまり初期化されていないのです。これは、結論から申し上げますと、適当にstartさせてしまえば良いようです。具体的には、play.api.Playオブジェクトのstart(app)メソッドを実行すると、Playが開始状態になります。appには、適当なApplicationクラスのインスタンスをセットします。この辺は、Testモードの時に使われる(と思われる)FakeApplicationクラスなどを参考にしています。テスト用のApplication生成について、APIドキュメント(リンク)に記載がありますね。Play2.1では、Applicationクラスがabstractになってしまいました。代わりにDefaultApplicationクラスを使えばOKです。常にMode=Prodで良ければStaticApplicationを使ってもOK。詳細はAPIドキュメントを参照してください。適当とは言え、モードの指定だけは個別に対応する必要があり、開発モード(Mode=Dev)かリリースモード(Mode=Prod)かを判定する必要があります。Webアプリ動作時は、おそらく、SBT経由の場合とNetty経由の場合で設定されるモードを変えるようにしているのでしょう。今回は、システムプロパティを設定して判定する方法にしました。(詳細は後述)Eclipseから実行する場合、"java.library.path"に"eclipse"が含まれていればDevという、アドホックな判定方法もあります。(Prod)のように出力されるのを見れば分かります。以上を踏まえて、簡単なバッチフレームワークを作ってみました。終了時にPlay.stopを入れるのを忘れていたので追加しました。normally")}実装クラスの例として、次のようなクラスを作ります。batch.DumpEmployeeNamesとすればOKです。サーバ上での実行は、Jenkinsを使うと便利だと思います。2017年・冬ここ半年くらいで参考になった情報のメモ。2016-02-26Javaでゲームパッドの入力をJInputを使って実現する突然、ゲームを作ってみたくなりました。Framework(以降skinnyと表記)のTIPS、第2弾です。(2)プロフィールid:argiusはてなブログをはじめよう!argiusさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。