2013-04-03 51 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发生冲突问题 –

相关问题