gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 11:42:38 25 4
gpt4 key购买 nike

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

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

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

对于 AppConfig 类来说,这可能不是什么大问题,但我的 ServiceLocator 实际上保存了一堆占用大量内存的引用。

有什么方法可以将这些单例引用放入 Liferay 门户中的某种共享上下文中吗?

最佳答案

问题是每个 Portlet 都在自己的 WAR 文件中运行,并且 aech war 文件有自己的类加载器。

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

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

关于java - 在多个 portlet 之间共享的 Singleton 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42639938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com