2

AXIS 1 と Commons Logging を使用する WAS 6.1 で発生した問題を追跡しようとしています。私のEARは最後に親に設定されています。ear には commons-logging、Axis、および Axis を使用するクライアント jar があります。クライアント jar 内のクラスは WAR から呼び出されます。

WAR はクライアントを呼び出します。クライアントは、コモンズ ロギングを必要とする軸 jar を呼び出します。しかし、EAR がそれ自体から commons-logging をロードしているようには見えません。commons-logging は WebSphere から来ているようです。

次に、WAR の別のクラスが commons-logging を直接要求し、EAR がそれをロードしているように見えます。その結果、次のエラーが発生します: org.apache.commons.logging.impl.LogFactoryImpl は org.apache.commons.logging.LogFactory と互換性がありません

これを防ぐためにできることはありますか?私は状況を間違って読んでいますか?

4

1 に答える 1

0

commons-logging と Axis 1 はどちらも WAS 6.1 に組み込まれているため、EAR と WAR から完全に削除しようと思います。その後、クラスローダー ポリシーをデフォルトの「PARENT_FIRST」に設定できます。これは確かにより堅牢です。

コードをコンパイルするには依然として Axis と jcl が必要なので、それらを EAR から削除するだけにしてください。Maven を使用する場合、スコープを「provided」に変更することを意味し、Ant は ear タスク用に個別に jar リストを作成し、Eclipse EAR プロジェクトを使用して、デプロイメント アセンブリから適切な jar を削除します。

あなたがどうしたかについての簡単な情報に感謝します。

于 2011-10-08T10:57:37.183 に答える