Glassfishでアプリを動かす際に、使用しているライブラリが参照するJacksonがどうも古い
というところから、なぜ動かないのかはまったのでメモ。
結論
どうやらGlassfishのmodulesの中にJacksonのjarがあり、そのバージョンが古い。
そして、Jackson依存のライブラリを利用するために、MavenのPOMで依存関係を指定しても、
Glassfish上のJacksonライブラリをクラスローダーで先に読み込んでしまうため、
古い方のライブラリが優先されてしまうよう。
#対応策
もう直接ライブラリのバージョンアップしちゃいました。
Tomcatとかでも同じようなことを書いてある記事があったので、そちらを参考に、
ライブラリをアップデート(やるときは自己責任でお願いします。)
対象ファイル
- jackson-core.jar
- jackson-databind.jar
- jackson-annotations.jar
- jackson-jaxrs-base.jar
- jackson-jaxrs-json-provider.jar
とりあえず元ファイルはバックアップを取ってから実行することをお勧めします。
私はLineのBotを試したりしたかったので、Jacksonの2.8.10を入れてますが、他のバージョンでも、
関連ライブラリのバージョンがそろっていれば問題ないかも。