- PR -

WebSphereのlibにあるjarファイルと同じ名前のjarファイルを使用したいのですが。

1
投稿者投稿内容
ハマ
会議室デビュー日: 2004/03/26
投稿数: 5
投稿日時: 2005-12-27 20:09
現在、開発中のアプリケーションでjs.jarというライブラリを使用しています。

開発したアプリケーションをWAS6.0にデプロイしたのですが、WebSphereにも/opt/WebSphere/AppServer/lib/js.jarがあり、アプリケーションを起動するとこちらのjarファイルが先に読まれてしまい、エラーが発生してしまいます。

クラスローダーの設定を変更して、アプリケーションのWebモジュールのクラスローダーを「親が最後」に設定したのですが、今度はActionServletのエラーが出力されうまくいきません。

今は、応急処置としてWebSphereのjs.jarをrenameして読み込ませないようにしています。ただ、この方法だと見かけ上は動作していてもWebSphereに影響があるかもしれず、根本的な解決方法を調査しています。

WebSphereはTomcatと違い非常に多くのライブラリがlib配下に有り、重複する可能性が高いと思うのですが、根本的な解決法を御存知の方がおられましたら御教授願えますよう宜しくお願い致します。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-12-28 10:22
具体的にどのようなエラー(例外?)が発生しているのか示してはいかがでしょう。
「親が最後」が正常に働かないということであれば、既知の障害としてドキュメントに掲載されていないか確認して、ないようでしたら最終的にはサポート窓口に問い合わせる必要があるかと存じます。
ご存じかとは思いますが、ライブラリの衝突はファイル名は関係なく、含まれているクラスが衝突しているかが重要です。
ライブラリが衝突しているかどうかは以下のツールで確認できます。
(2つを比べるのは手作業でもわけないですが)
・わらじ
http://yusuke.homeip.net/waraji/
ハマ
会議室デビュー日: 2004/03/26
投稿数: 5
投稿日時: 2005-12-28 11:39
インギさん、はじめまして。

トップ画面を開くと画面上に下記のエラーが出力されます。

-----------------------------------------------------------------------------
Error 404: SRVE0203E: サーブレット [action]: org.apache.struts.action.ActionServlet が見つかりましたが、別の必須クラスが欠落しています。 SRVE0206E: このエラーは、通常、サーブレットがサーバーが検索できないクラスでコンパイルされたことを示しています。 SRVE0187E: クラスパスをチェックして、サーブレットが必要とするクラスがすべてあることを確認してください。SRVE0210I: この問題は、アプリケーションのランタイム・クラスパスにあるクラスだけを使用してサーブレットを再コンパイルすることによりデバッグできます。 SRVE0234I: アプリケーション・クラスパス・・・。
-----------------------------------------------------------------------------

宜しくお願い致します。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-12-28 11:58
これは「ActionServletのエラー」ですね?
根本原因は NoClassDefFoundError でしょうか。すると WAS に付属の js.jar に必要なクラスが含まれていないのかもしれません。
わらじをつかうなり、ライブラリを解凍するなりして確かめてみてはいかがでしょう。

サーブレットの仕様上は WEB-INF/lib 以下のライブラリを優先して読み込むことを推奨しています(Servlet Spec2.3 SRV9.7.2 に書いてあります)ので、「親が最後」の設定でうまくいくことを期待したいところです。
この機能に関してドキュメントには既知障害みたいなページに挙がっていないでしょうか?
ハマ
会議室デビュー日: 2004/03/26
投稿数: 5
投稿日時: 2005-12-28 16:05
インギさん、こんにちは。

上記のエラーは親が最後を実行したときに出力されたエラーになります。
js.jarに関しては、WebSphereのlibにあるものとWEB-INF/libにあるものとで使用したいクラスの中身が違っていることを確認済みです。

一応Tomcat上では動作しているので、親を最後にすることでうまく動作すると思ったのですが、ダメでした。

何故、上記のエラーが出るかは現在原因不明です。

何か、お気づきの点がございましたら御教授願います。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-12-28 17:07
気がついたのは WAS のクラスローディングに不具合があるのではないか?ということです。
なのでドキュメントを読むなりサポート窓口に問い合わせるなりして確認することをお勧めしました。
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2005-12-28 17:43
引用:
一応Tomcat上では動作しているので、親を最後にすることでうまく動作すると思ったのですが、ダメでした。


TomcatのクラスローダがたまたまStrutsの依存クラスを読み込んで正常に動作している可能性があります。
Strutsの依存クラスが全てlibに格納されているか確認されてはいかがでしょうか。
1

スキルアップ/キャリアアップ(JOB@IT)