我正在使用许多模块开发门户,这个模块基于spring 3.1和hibernate 4.x在liferay 6.1下。通常我在每个portlet下添加了这两个框架的库。
当我部署和取消部署portlet时,我遇到了内存PermGen问题,并且在运行门户网站一段时间后也遇到了相同的PermGen问题。
最好移动库我经常使用它到tomcat级别。或者已经在liferay中支持这些框架。
JVM参数是: JAVA_OPTS =“$ JAVA_OPTS -Dfile.encoding = UTF8 -Dorg.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES = false -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 :(得分:0)
Liferay 6.1在其根portlet中使用Spring 3.0.7。
如果在portal-dependency-jars
中的liferay-plugin-package.properties
中将它们配置为依赖项,这些将被复制到您的portlet中,因此它就像将它们包含在您自己的内容中一样。当然,您在portlet中包含的任何库都会增加对PermGen空间的使用。
在Tomcat中放置不同的Spring和Hibernate库可能会导致类加载问题。由于Hibernate 4.x在使用早于3.1的Spring时并不能很好地运行,因此您遇到了一些问题。您可以尝试在根portlet中升级Spring。我个人从来没有这样做过。
我会增加PermGen空间并将库放在portlet中。另外,在你的战争中,如果你使用的是Tomcat,你可能想把它放在META-INF/context.xml
中。
<Context>
<Loader loaderClass="com.liferay.support.tomcat.loader.PortalClassLoader" />
</Context>
这可能会解决一些类加载问题。在某些情况下,它没有任何区别,但如果您使用单独的库,则可能很重要。