前に作ったWeblogicのWebアプリで
JAX-RSを使ってみる
weblogicよりもアプリケーションモジュールに入れるライブラリを優先させたい事情があり、weblogic.xmlにprefer-web-inf-classesのtrueを追加してみたところ、これまで問題無かったのが、デプロイ出来ない状態に。。
ログには下記のエラーが出ています。
1 2 |
<2016/07/26 12時58分59秒 JST> <Error> <HTTP> <AUTH-DEV01> <AdminServer> <[ACTIVE] ExecuteThread: '11' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1469505539381> <BEA-101216> <Servlet: "JAX-RS Servlet" failed to preload on startup in Web application: "web-ap". java.lang.NoClassDefFoundError: Could not initialize class com.sun.proxy.$Proxy121 |
どうも、JAX-RSに関して何らかの問題が発生しているようなのですが、JAX-RSに関して明示しているライブラリはpom.xmlに書いた下記のみです。
1 2 3 4 5 |
<dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-core</artifactId> <version>1.19</version> </dependency> |
いろいろ試行錯誤した結果、上記で指定したものよりweblogicライブラリが優先的に使用されていて、1年間問題無かったのが、ライブラリの優先順位を変えた事によって、問題が発生したようなのです。最終的にcom.sun.jerseyについて上記のpomをジャージーのバンドルセットに変える事で解消しました。
1 2 3 4 5 |
<dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-bundle</artifactId> <version>1.19.1</version> </dependency> |
いや、びっくりしました。。