-100p

-10p

+10p

+100p

Ubuntu環境、TomcatのJavaのバージョンの上げ方

Ubuntu環境、Javaのバージョンを上げた際のTomcatのエラー修正。
tomcat.serviceでTomcat独自のJAVA_HOMEの設定。

関連ページ 参考URL
前ページ からの続き。
先日PCを買い替えて、しばらくは問題なく記事を更新できていた。

しかしサーブレットをWindows側でビルドしてサーバにアップした所、急に503エラーが出るようになった。
直感的にUbuntu上のjavaとWindows側のjavaのバージョン違いが原因だと推測はできたので、すぐ両方をjdk-21に統一した。
ところがそれでも解決できない。

問題個所の特定

まずUbuntu、Windows両方でjava -versionを入力し、お互いのバージョンを確認。
両方とも日付まで全く一緒のJavaが表示された。
openjdk version "21.0.2" 2024-01-16

ここからsudo service tomcat restartを実行し、HPを開いてみるが繋がらない。何度試しても503エラーになる。


もしかしてjdk-21が新しすぎて対応してないのではないかと思い、jdk-17に統一したり、jdk-13に統一してみたりしたが駄目だった。
最終的にはPCを買い替える前の、普通に運営できてた頃のjdk-11に戻してようやくHPが表示されるようになった。

色々調べてみて、Ubuntuのシステム上で選択しているJavaは、Tomcatでは何の関係もないことが分かった。
Ubuntu環境下のTomcatでは
 /etc/systemd/system/tomcat.service 
というファイルで、JAVA_HOMEを独自に設定しそれを使っている。

tomcat.serviceを編集

まずviでtomcat.serviceの中身を確認してみる。
sudo vi /etc/systemd/system/tomcat.servic

中では6個ぐらいのEnvironmentが設定されていて、その中にJavaに関する設定があるはず。
自分の場合、ここでjdk-11が明示的に指定されていた。
Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64"
とりあえずこれを21に変更して保存。
Environment="JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64"


リセットのためsudo service tomcat restartを実行すると、謎の警告文が出てくる。
Warning: The unit file, source configuration file or drop-ins of tomcat.service changed on disk. Run 'systemctl daemon-reload' to reload units.

どうやらTomcatの設定を変えたんだから、
 systemctl daemon-reload 
を実行しろと言っているようだった。

言われた通り実行してみる。
systemctl daemon-reload
今度は認証対象を選択しろみたいな文が出てきた。
==== AUTHENTICATING FOR org.freedesktop.systemd1.reload-daemon ===
Authentication is required to reload the systemd state.
Multiple identities can be used for authentication:
 1.  ,,, (
 [ユーザー名] 
)
 2.  tomcat
Choose identity to authenticate as (1-2): 2
Password:
==== AUTHENTICATION COMPLETE ===

1.の塗りつぶし部分はユーザー名が入っていて、なんか関係なさそうだったので2.のtomcatを選択してEnter。

この後再度sudo service tomcat restartをすると無事通った。
HPも正常に見れるようになってようやく解決。
0
0

-100p

-10p

+10p

+100p