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