1

WAS7.0でJavaWebモジュールを構成しています。すべてのモジュールJARがWEB-INF/libディレクトリーにあり、それらはすべてロードされています。私の問題は、それらがロードされる順序です。私は2つのジャーを持っています:someJar.jarそしてaPatchForSomeJar.jarそれは両方ともWEB-INF/libにあります。aPatchForSomeJar.jarにあるいくつかのクラスにパッチを適用しますsomeJar.jar。問題はsomeJar.jar、モジュールのクラスパスがパッチよりも高いことです。これにより、元のjarのクラスが、パッチが適用されたjarのパッチが適用されたバージョンよりも使用されます。

私の開発環境(WinXPのRAD7.5)では、モジュールのクラスパスはアルファベット順にロードされます(その結果、aPatchForSomeJar.jar前にロードされsomeJar.jarます)。ただし、テスト環境(GNU /Linux上のWAS7.0)にデプロイすると、モジュールのクラスパスがランダムな順序でロードされ(少なくともアルファベット順ではない)、パッチが元のJarの後にロードされるように見えます。

モジュールによってWEB-INF/lib jarがロードされる順序を変更する方法を知っている人はいますか?

4

1 に答える 1

3

私の知る限り、jarファイルをアルファベット順にロードするという概念はありません。

パッケージモデルを再検討する必要があります。patch.jarとoriginal.jarの両方をパッケージ化すると、悲しみが生じます。

patch.jarに修正されたものが含まれているのに、なぜ元のjarが必要なのですか?

original.jarとpatch.jarを保持したい場合でも(完全であると想定しています)、クラスローダー階層を使用して、常にoriginal.jarと比較してpatch.jarが最初にロードされるようにすることができます。

たとえば、parent_lastのクラス読み込みポリシーを使用して共有ライブラリレベルでoriginal.jarをパッケージ化し、patch.jarをWEB-INF/libに保持できます。

別の方法としてこれを提案していますが、orginal.jarをpatch.jarに置き換えるか、パッチにすべての変更されたファイルを含める(およびoriginal.jarからそれらを削除する)ことを検討する必要があります。

HTH

マングル

于 2012-04-19T06:13:31.470 に答える