我有一個Liferay應用程序中的幾個Singleton類,它們擁有幾個配置參數和一個帶實例的ServiceLocator,以便我需要使用WebServices。要在多個portlet之間共享的單例類
我已經把這些類放在一個聲明爲所有portlet的依賴項的jar中。
問題是,我在這些單例類中放了一些用於初始化的日誌行,並且當我部署我的portlet時,我可以多次看到這些行,每次portlet一次,因爲每個portlet都有它自己的類上下文。
對於AppConfig類,它可能不是什麼大不了的事,但是我的ServiceLocator確實擁有一大堆佔用大量內存的引用。
有沒有什麼方法可以將這些單例引用放入我的Liferay Portal中的某種共享上下文中?
每個Portlet是否都有自己的類加載器實例? – Alexander
是的,他們在不同的戰爭 – MichelReap
這就是問題所在!通常,當我必須實現這樣的事情時,我必須將包含Singleton類的JAR放入_common_類加載器庫(在Tomcat中:「/common/lib」或類似的東西),而不是將其包裝到每個WAR中。問題是你也必須把所有的依賴庫放到這個通用的lib目錄中。雖然不知道如何在Liferay中做到這一點。對於tomcat看到這個線程:http://stackoverflow.com/questions/267953/does-tomcat-load-the-same-library-file-into-memory-twice-if-they-are-in-two-web –
Alexander