带有弹簧3.1和休眠4.1.5的Liferay 6.1

时间:2013-04-03 09:38:45

标签: spring hibernate liferay portlet spring-portlet-mvc

我正在使用许多模块开发门户,这个模块基于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"

1 个答案:

答案 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>

这可能会解决一些类加载问题。在某些情况下,它没有任何区别,但如果您使用单独的库,则可能很重要。