Spring Boot App を Payara Micro へデプロイする

Spring Boot App を Payara Micro にデプロイする方法を確認してみた。

素材として Spring Petclinic を利用する。

結局、spring.io blog の Deploying Spring Boot Applications を参考に Application クラスや pom.xml を編集するだけだった。

executable jar(war) で実行することに対するメリットは思いつかなかった。

Spring Boot App から Eclipse MiroProfileクラスタリングやヘルスチェック、ロードバランシングなどの機能が利用できると便利なんじゃないか、と思ったこともあるけど、そもそもアプリケーションに組み込むべき機能なのかどうか疑問だし、何より Spring と JavaEE(JakartaEE) を混ぜ合わせて使うのは筋悪のような気がします。

動かしてみる手順

Payara のダウンロードページから Payara Micro (jarファイル)を取得して、適当な場所に置いておく。

fork して改変した Spring PetClinic を取得して、ビルドする。

git clone https://github.com/yujiorama/spring-petclinic
cd spring-petclinic
./mvnw clean package
(いろいろなログ出力)
ls -l target/spring-petclinic-2.1.0.BUILD-SNAPSHOT.war
-rw-r--r-- 1 y_okazawa 197609 40995335 6月   1 14:09 target/spring-petclinic-2.1.0.BUILD-SNAPSHOT.war

Payara Micro を実行する。 しばらくするとアプリケーションの初期化が完了して、ブラウザからアクセスできるようになる。

java -Dfile.encoding=UTF-8 \
-jar ~/Downloads/payara-micro-5.192.jar \
--deploy target/spring-petclinic-2.1.0.BUILD-SNAPSHOT.war \
--contextroot spetclinic
2019-06-01 14:10:03.989  INFO 13772 --- [           main] PayaraMicro                              :
{
    "Instance Configuration": {
        "Host": "DEVW1904",
        "Http Port(s)": "8080",
        "Https Port(s)": "",
        "Instance Name": "Kind-Turbot",
        "Instance Group": "MicroShoal",
        "Hazelcast Member UUID": "86c85883-644f-487f-8236-e4b0d0ea3213",
        "Deployed": [
            {
                "Name": "spring-petclinic-2.1.0.BUILD-SNAPSHOT",
                "Type": "war",
                "Context Root": "/spetclinic"
            }
        ]
    }
}
2019-06-01 14:10:04.005  INFO 13772 --- [           main] PayaraMicro                              :
Payara Micro URLs:
http://DEVW1904:8080/spetclinic


2019-06-01 14:10:04.005  INFO 13772 --- [           main] PayaraMicro                              : Payara Micro  5.192 #badassmicrofish (build 115) ready in 44,734 (ms)
2019-06-01 14:10:37.629  INFO 13772 --- [ttp-listener(2)] javax.enterprise.web                     : WebModule[/spetclinic] ServletContext.log():Initializing Spring DispatcherServlet 'dispatcherServlet'
2019-06-01 14:10:37.629  INFO 13772 --- [ttp-listener(2)] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2019-06-01 14:10:37.644  INFO 13772 --- [ttp-listener(2)] o.s.web.servlet.DispatcherServlet        : Completed initialization in 15 ms