我在 Liferay 应用程序中有几个 Singleton 类,它们包含多个配置参数和一个 ServiceLocator,其中包含我需要使用的 WebServices 实例。
我已将这些类放入一个 jar 中,该 jar 被声明为对我的所有 portlet 的依赖项。
问题是,我在这些单例类中放置了一些用于初始化的日志行,当我部署 portlet 时,我可以多次看到这些行,每个 portlet 一次,因为每个 portlet 都有自己的类上下文。
对于 AppConfig 类来说,这可能不是什么大问题,但我的 ServiceLocator 实际上保存了一堆占用大量内存的引用。
有什么方法可以将这些单例引用放入 Liferay 门户中的某种共享上下文中吗?
问题在于每个 Portlet 都在其自己的 WAR 文件中运行,并且 aech war 文件有其自己的类加载器。
通常当我必须实现这样的需求时,我必须将 Singleton 类放在一个 JAR 文件中,并将这个 JAR 文件放在公共类加载器库中,而不是将其打包到每个 WAR 中。 (在汤姆猫中:<tomcatHome>/common/lib
或类似的东西)
然后,您还必须将所有依赖库也放入该公共 lib 目录中。但不知道如何在 Liferay 中做到这一点。对于 tomcat,请参阅此线程:stackoverflow.com/questions/267953/ 和此文档:http://tomcat.apache.org/tomcat-7.0-doc/class-loader-howto.html。取决于 Servlet 容器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)