Tomcat 5.5 および Tomcat 6.0 サーバーでこの奇妙な問題が発生しています。Tomcat にインストールする 2 つの Web アプリケーションがあります。Tomcat を開始すると、これら 2 つの Web アプリケーションも同時に開始されますが、1 つのアプリケーションで初期化に失敗したために、1 つの Web アプリケーションが初期化に失敗することがあります。Tomcat 7.0 では、他のアプリケーションが初期化に失敗した場合でも、アプリケーションは正常に実行されます。
いくつかのデバッグの後、両方のアプリケーションの web-inf/lib フォルダーにある Crystal.jar という名前の jar が 1 つあることがわかりました。jar を tomcat の common/lib フォルダーに移動したところ、正常に動作し始めました。Tomcat 5.x および Tomcat 6.x バージョンではなく、Tomcat 7.0 で正常に動作する理由を知りたいです。これらのバージョン間でクラスローディング アーキテクチャに変更はありますか?
ありがとう
EDIT1:ライブラリは両方のアプリケーションの WEB-INF\lib ディレクトリの場所にあり、外部 DLL との依存関係はありません。ちょうど今、Tomcat 5.5 クラスローダ アーキテクチャについて読み、すべての Web アプリケーションに独自のクラス ローダがあることを知りました。WEB-INF\lib フォルダーと classes フォルダー内のライブラリーは、このクラスローダーにロードされます。共通ディレクトリに保存されているライブラリは、共有クラスローダーに配置されます。次に、このライブラリを Web アプリケーションの別のクラス ローダーに個別にロードする必要があります。これにより、1 つの Web アプリケーションが起動に失敗した場合でも、他の Web アプリケーションは独立して動作するはずです。それが私が奇妙に感じた理由であり、さらに調査する必要があります。