我有一個無狀態會話bean,它創建一個RuntimeFactory
和Application
對象。這兩個課程都是Social Business Toolkit的一部分。 Application
用於讀取屬性和受管Bean文件,但是這並未發生,因爲RuntimeFactory
無法獲取Application
對象。Thread.currentThread()。getContextClassLoader()返回多個對象實例
AbstractRuntimeFactory
具有Map
與Application
對象:
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);
}
都靈g調試我注意到線程ID保持不變,但有兩個不同的ClassLoader
實例。這是如何發生的?只有一個會話bean,RuntimeFactory和Application。不應該getContextClassLoader()總是給我同樣的對象嗎?
正如我解決我現在使用:
ClassLoader cl = this.getClass().getClassLoader();
哪裏this
是RuntimeFactory
,但我不知道這是一個很好的解決方案。它給人的感覺更像一個解決方法的實際問題。
ps:我正在使用WebSphere Portal作爲應用程序服務器。
是你的類裝載家長首先還是家長最後? –
這是PARENT_LAST。 – magnetronnie