アプリケーションの実行中に、ある時点で混乱しました。私のアプリケーションは、EJB とサーブレットで構成されています。これらのアプリケーション タイプのクラス ローダーが同じか異なるかを知る必要があります。アプリケーション コンテナとして weblogic を使用しています。私を助けてください。
3 に答える
私のアプリケーションには、シングルトンとクラス ローダーに依存するクラスが 1 つあります。問題は、クラス ローダーが変更されるとクラスのインスタンスが変更されることです。クラスの同じインスタンスを使用する必要があります。
はい、すべての webapp クラスローダーが委任するシステム クラスローダーがあります。
クラスをそのクラスローダーに入れるには、それが関連するクラスパスにあることを確認する必要があります。たとえば、Tomcat では、JAR ファイルを $CATALINA_HOME/lib に配置します (... 私の記憶が正しければ)。
そうは言っても、複数の Web アプリケーション間でアプリケーション シングルトンを共有することが良い設計であるとは確信していません。
各アプリケーションは通常、クラス ローダーの独自のインスタンスに読み込まれます。クラスローダーは Web コンテナーによって提供されるクラスになりますが、実行中のアプリケーションごとに 1 つのインスタンスが存在します。これにより、アプリケーションが静的/クラス変数を使用しているか、シングルトンなどを使用しているかに関係なく、アプリケーションを互いに分離し、多くのインスタンスをロードできます。
WebLogic は階層化されたクラス ローダーを使用します。アプリケーションはどのようにパッケージ化されていますか? EAR または WAR + JAR のどちらですか?
このリンクは役に立ちます。