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