java – 要在多个portlet之间共享的Singleton类

我在Liferay应用程序中有几个Singleton类,它们包含几个配置参数,ServiceLocator包含我需要使用的WebServices实例.

我已将这些类放在一个jar中,该jar被声明为对我所有portlet的依赖.

问题是,我已经在这些单例类中放置了一些用于初始化的日志记录行,当我部署我的portlet时,我可以多次看到这些行,每个portlet一次,因为每个portlet都有自己的类上下文.

对于AppConfig类,它可能不是什么大问题,但我的ServiceLocator实际上确实拥有一堆占用大量内存的引用.

有什么方法可以将这些Singleton引用放在Liferay Portal中的某种共享上下文中吗?

最佳答案
问题是每个Portlet都在自己的WAR文件中运行,而aech war文件有自己的类加载器.

通常,当我必须达到这样的要求时,我必须将Singleton classen放在JAR文件中,并将此JAR文件放在公共类加载器库中,而不是将其打包到每个WAR中. (在Tomcat中:< tomcatHome> / common / lib或类似的东西)

然后你还必须将所有依赖库放入该公共lib目录中.但是,不知道如何在Liferay中做到这一点.对于tomcat,请参阅以下主题:stackoverflow.com/questions/267953/和本文档:http://tomcat.apache.org/tomcat-7.0-doc/class-loader-howto.html.取决于Servlet容器.

转载注明原文:java – 要在多个portlet之间共享的Singleton类 - 代码日志