2013-04-03 165 views
0

我開發的門戶網站有很多模塊,這個模塊基於spring 3.1和hibernate 4.x下的liferay 6.1。通常我在每個portlet下爲這兩個框架添加了庫。Liferay 6.1 with spring 3.1 and hibernate 4.1.5

我在部署和取消部署Portlet時遇到了Memory PermGen問題,並且在運行門戶網站之後也遇到了相同的PermGen問題。

它更好地移動庫我經常使用它到tomcat級別。或者已經在liferay中支持這些框架。

JVM的參數是: JAVA_OPTS =「$ JAVA_OPTS -Dfile.encoding = UTF8 -Dorg.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES =假-Duser.timezone = GMT -Djruby.min.runtimes = 1 - Djruby.max.runtimes = 3 -Djruby.runtime = 1 -XX:NewSize = 700m -XX:MaxNewSize = 700m -Xms2048m -Xms2048m -XX:MaxPermSize = 512m -XX:+ UseParNewGC -XX:+ UseConcMarkSweepGC -XX:+ CMSParallelRemarkEnabled -XX:SurvivorRatio = 10 -XX:ParallelGCThreads = 8「

+0

你使用Maven嗎?你是否嘗試過增加Liferay實例的PermGen? –

+0

您不會提供PermGen的當前值 - 如果它是合理的:只需增加它即可。如果您的PermGen內存不足,那麼您通常必須執行此操作。畢竟,這種內存通常不會被垃圾回收。如果您經常重新部署但泄漏了permgen內存,則可能必須在重新部署幾次後重新啓動服務器。 –

回答

0

Liferay 6.1在其根portlet中使用Spring 3.0.7。

如果您將它們配置爲portal-dependency-jarsliferay-plugin-package.properties中的依賴關係,這些將被複制到您的portlet中,因此它們很像您自己包含它們。當然,您在portlet中包含的任何庫都會增加您對PermGen空間的使用。

在Tomcat中放置不同的Spring和Hibernate庫可能會導致類加載問題。由於Hibernate 4.x在3.1之前並不能很好地運行,所以你有一些問題。您可以嘗試升級根portlet中的Spring。我個人從來沒有這樣做過。

我會增加PermGen空間並將這些庫放入您的portlet中。另外,在你的戰爭中,如果你正在使用Tomcat,你可能想把它放在META-INF/context.xml之內。

<Context> 
    <Loader loaderClass="com.liferay.support.tomcat.loader.PortalClassLoader" /> 
</Context> 

這可能會解決一些類加載問題。在某些情況下,它沒有任何區別,但如果您使用單獨的庫,則可能很重要。

+0

我認爲應該認真考慮將我們的portlet從Spring 3.1降級到Spring 3.0.6以及hibernate中的同樣的事情,因爲如果您想使用共享加載器,無法在tomcat中爲多個portlet創建共享庫。所有的portlet都會看到這個庫,並會導致ROOT Portlet發生衝突問題 –

相關問題