Challenge Java EE !

Java EEを中心に趣味や仕事における開発メモを書いています。Java EEはJakarta EEに名前が変わりましたが、当面ブログ名はこのままにします。

MicroProfile Starterで作ったWebをHerokuで動かすとError R10 (Boot timeout)エラーになるのを解決する

Spring InitializrのようにMicroProfileのプロジェクトを作れるMicroProfile Starterについて先日ブログを書きました。

kikutaro777.hatenablog.com

このStareterで作ったWebアプリをHeroku上で動かしたいなと思ったのですが、デプロイしてサーバ起動後にError R10 (Boot timeout)エラーとなりました。

解決方法

localhostを0.0.0.0に書き換えるで解決しました(^^;

色々調べたところ最終的に以下のページにたどり着きました。

stackoverflow.com

上記の中にコメントがあるのですが、localhostの定義を0.0.0.0にすると動くとのことです。さっそくproject-defaults.ymlを開いて、以下の修正をしました。

# A project defaults for use with MP-JWT auth-method that include additional role mapping
swarm:
  bind:
 #address: localhost
 address: 0.0.0.0

これでデプロイしたらエラーは発生せず、画面にアクセスできました。

MicroProfile Starterのサンプル
MicroProfile Starterのサンプル

めでたしめでたし。

しかしなぜこうしなければならないのか…。node.jsの例ですが、Herokuの公式でもlocalhostじゃなくて0.0.0.0にしてね、というのがありましたが、理由がイマイチわかっていないです…。

help.heroku.com


Herokuにアップするためにやったことは次のとおりです。

Procfileの追加

以下内容のProcfileを追加しました。

web: java $JAVA_OPTS -Dswarm.http.port=$PORT -jar target/microprofilesample-thorntail.jar

ポートの指定方法は、HerokuのページにちゃんとThorntailの例がありました。素晴らしい。

Setting the HTTP Port for Java Applications | Heroku Dev Center

これでデプロイしたところThrontail is Readyになったあと、しばらくするとCrashしました。エラーは次の内容です。あとは冒頭の「解決方法」を参照してください。

 Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 90 seconds of launch

サンプルコード

今回試したサンプルコードは以下にあります。といってもコードはMicroProfile Starterそのままです(^^;

github.com

にほんブログ村 IT技術ブログへ
にほんブログ村 にほんブログ村 IT技術ブログ Javaへ
にほんブログ村