playframework2.4からのembedding server機能が便利

play2.4から、routesその他を書かずにScalaコードだけで手軽にhttp serverを生成、起動できる機能が入ったらしいです。
手軽にちょっとしたmockのサーバー作りたいとか、色んな用途に使えそうですね?
以下、sbtのscalasと組み合わせた最低限のサンプル(18行でいけた)


色んな詳細は解説しないので、コードかドキュメント読んでください。

上記ではscalasでやってますが、おなじようなbuild.sbtとMain.scalaみたいに2つファイル用意しても、もちろん動きます。(その場合のサンプル https://gist.github.com/xuwei-k/bd74a82f4904cc025d2e )


手軽にやるにはmodeをplay.api.Mode.Testにしないと、application.confを読みにいこうとして死ぬのが地味に面倒でした。
ServerConfigのoverloadされてるapplyの中でのConfiguration.loadの最後のallowMissingApplicationConfがtrueか否か、でファイルが存在しなかった場合にエラーにするかどうか?が変わるようです。


application.confを読みにいくのをmodeをTestにする以外で回避方法は

  • それをしないような独自のplay.api.Configurationオブジェクト生成して、デフォルト引数がない方のServerConfigのapplyというかコンストラクタでServerConfigを生成する
  • 素直にapplication.confを用意しておくか、"config.file"で明示的にファイル指定する

などでしょうか?



追記: