我使用 JCS 来存储 ldap 搜索结果,该结果应由多个 EJB 共享。我创建了一个单例类来仅初始化 JCS 一次,但由于 EJB 的类加载器,它已使用自己的副本初始化了多次。所以搜索资源不共享。
你们如何解决需要在多个 bean 之间共享缓存的问题?
我正在寻找 JVM 内的缓存。 (不是远程,例如 memcached 等)。
Glassfish 用作应用程序服务器。
我还没有能够测试它,但我认为其中解释的技术之一“规避类加载器隔离”您所使用的 Glassfish 版本的应用程序开发指南的章节可能会解决您的问题。
简短版本,至少对版本 2-3-4 有效:使用通用类加载器(该通用类加载器到底做什么以及它与其他类加载器的关系在同一手册中进行了解释)。做这件事有很多种方法:
- 将罐子复制到域目录/lib
- 或将 jar 复制到安装时/lib
- or run
asadmin add-library --type common /path/to/your.jar
(仅适用于版本 4 iirc)
这里有几个关于 SO 的问题与“规避类加载器隔离”(只需使用该搜索词)相关,请在那里查找示例和更多讨论。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)