RuntimeFactory
andApplication
オブジェクトを作成するステートレス セッション Bean があります。どちらのクラスも Social Business Toolkit の一部です。Application
プロパティとマネージド Bean ファイルの読み取りに使用されますが、オブジェクトRuntimeFactory
を取得できなかったため、これは発生しませんでした。Application
AbstractRuntimeFactory
Map
withApplication
オブジェクトがあります:
private Map<ClassLoader,AbstractApplication> applications = new HashMap<ClassLoader, AbstractApplication>();
ClassLoader
次のメソッドを使用して設定されます。
protected ClassLoader getContextClassLoader() {
return Thread.currentThread().getContextClassLoader();
}
オブジェクトは次のApplication
メソッドで取得されます。
public Application getApplicationUnchecked() {
ClassLoader cl = getContextClassLoader();
return applications.get(cl);
}
デバッグ中に、スレッド ID が同じままであることに気付きましたが、ClassLoader
. これはどのように起こりますか?セッション Bean は、RuntimeFactory と Application の 1 つだけです。getContextClassLoader() は常に同じオブジェクトを返すべきではありませんか?
回避策として、次を使用します。
ClassLoader cl = this.getClass().getClassLoader();
はどこthis
にありますがRuntimeFactory
、これが良い解決策かどうかはわかりません..実際の問題の回避策のように感じます。
ps: WebSphere Portal をアプリケーション サーバーとして使用しています。