B-Teck!

お仕事からゲームまで幅広く

【Kotlin】JerseyをKotlinで動かす その1 導入編

Jersey+KotlinでAPIサーバーを構築する方法と、実装例をご紹介していこうと思います。
とりあえず第一回目としてJersey公式の雛形からProjectを作成し、Kotlin化するところまでを書きます。

基本的な導入の手順は公式の Chapter 1. Getting Started を参考に書いていきます。

Jerseyの雛形を作る

  1. mavenのインストール
  2. 任意のフォルダの配下で下記コマンドを実行する
mvn archetype:generate -DarchetypeArtifactId=jersey-quickstart-grizzly2 \
-DarchetypeGroupId=org.glassfish.jersey.archetypes -DinteractiveMode=false \
-DgroupId=com.example -DartifactId=simple-service -Dpackage=com.example \
-DarchetypeVersion=2.28

これを実行するとフォルダ内に下記構成のディレクトリが生成されます。

simple-service
├── pom.xml
└── src
    ├── main
    │   └── java
    │       └── com
    │           └── example
    │               ├── Main.java
    │               └── MyResource.java
    └── test
        └── java
            └── com
                └── example
                    └── MyResourceTest.java

Kotlin化する

Add gitignore · beatdjam/Jersey-On-Kotlin-Sample@8296a0f · GitHub

pomの記述変更

Convert Java file to Kolin · beatdjam/Jersey-On-Kotlin-Sample@a64a0d7 · GitHub

主にやっていることは

  • dependenciesに下記を追記
    • kotlin-stdlib-jdk8
    • kotlin-test
  • buildに下記を追記
    • sourceDirectory
    • testSourceDirectory
  • pluginに下記を追記
    • kotlin-maven-plugin

ファイルのKotlin化

下記構成になるようファイルをKotlin化する。
IntelliJの機能でJavaからKotlinに変換したあと、記述をKotlinっぽくしたりした。
あと、 HttpServer.stop() がdeprecatedだったので HttpServer.shutdownNow() に書き換えたりした。

simple-service
├── pom.xml
└── src
    ├── main
    │   └── kotlin
    │       └── com
    │           └── example
    │               ├── Main.kt
    │               └── MyResource.kt
    └── test
        └── kotlin
            └── com
                └── example
                    └── MyResourceTest.kt

Main.java → Main.kt

Main.java
Main.kt

MyResource.java → MyResource.kt

MyResource.java
MyResource.kt

MyResourceTest.java → MyResourceTest.kt

MyResourceTest.java
MyResourceTest.kt

サーバーの起動

Jerseyの雛形にはGrizzlyという軽量なHttpServerが付属していて、下記コマンドで起動できます。

mvn clean test;mvn exec:java;

無事起動できたら、このような表示がCLI上に表示されます。

Jersey app started with WADL available at http://localhost:8080/myapp/ application.wadl
Hit enter to stop it...

http://localhost:8080/myapp/myresourceにアクセスして、 Got it! と表示されれば完了です。

Grizzly上ではなく通常のJavaEEアプリケーションとして動かす場合

通常のJavaEEアプリケーションとしてプロジェクトを作成する場合は、
1.4. Creating a JavaEE Web Application を参考にしてください。

ここまでの作業

下記のタグまでが今回の記事の作業分です。
https://github.com/beatdjam/Jersey-On-Kotlin-Sample/tree/chapter1