Ratpack で Java Web アプリケーション作成
Ratpack は以前 「Ratpack + JHaml + Morphia で MongoDB を使った Web アプリ開発」 で試しましたが、3年以上経っているので改めて試してみました。
今回は単純な Java Web アプリケーションを Ratpack で作成する事にします。
ソースは http://github.com/fits/try_samples/tree/master/blog/20141229/
Web アプリケーションの作成
今回の作成手順は以下のようになります。
- (1)
HandlerFactory
インターフェースの実装クラスを作成 - (2) ratpack.properties で handlerFactory を設定
ファイル構成
今回は Gradle でビルドしましたので、ファイルは以下のような構成になっています。
ビルド定義
アプリケーションの実行やアーカイブ化を簡単に行うため、Gradle 用の ratpack-java プラグインを使います。
ratpack-java を使う場合、ratpack の依存設定 (dependencies) は要らないようですが、slf4j だけは実行に要るようです。
build.gradle
buildscript { repositories { jcenter() } dependencies { classpath 'io.ratpack:ratpack-gradle:0.9.11' } } apply plugin: 'io.ratpack.ratpack-java' repositories { jcenter() } dependencies { runtime 'org.slf4j:slf4j-simple:1.7.5' }
(1) HandlerFactory 実装クラスの作成
とりあえず /sample/xxx
へアクセスすると単に "sample - xxx" を出力するだけの処理を実装しました。 (xxx は任意の文字列)
出力には Context
オブジェクトの render()
メソッドを使用し、URL のパラメータ部分 (下記の :id
) は PathTokens
の get()
メソッドで取得します。
src/main/java/AppHandlerFactory.java
import static ratpack.handling.Handlers.*; import ratpack.handling.Context; import ratpack.handling.Handler; import ratpack.launch.HandlerFactory; import ratpack.launch.LaunchConfig; public class AppHandlerFactory implements HandlerFactory { @Override public Handler create(LaunchConfig config) throws Exception { return chain( path("sample/:id", ctx -> ctx.render("sample - " + ctx.getPathTokens().get("id"))) ); } }
(2) handlerFactory の設定
作成した AppHandlerFactory を handlerFactory へ設定します。
こうする事で、実行時に handlerFactory として AppHandlerFactory が使用されます。
src/ratpack/ratpack.properties
handlerFactory=AppHandlerFactory
テスト実行
gradle run
でテスト実行できます。
> gradle run :compileJava UP-TO-DATE :processResources UP-TO-DATE :classes UP-TO-DATE :configureRun :prepareBaseDir UP-TO-DATE :run [main] INFO ratpack.server.internal.NettyRatpackServer - Ratpack started for http://localhost:5050 ・・・
http://localhost:5050/sample/abc
へアクセスすると、sample - abc
が表示されます。
成果物の生成
gradle distZip
を実行すると、build/distributions へ zip ファイルが生成されます。
> gradle distZip :compileJava UP-TO-DATE :processResources UP-TO-DATE :classes UP-TO-DATE :jar :startScripts :distZip BUILD SUCCESSFUL
zip ファイルを解凍して、bin ディレクトリの起動スクリプト (今回のサンプルでは ratpack_sample
) を実行すれば Web アプリケーションを単体起動できます。