繁体   English   中英

从2个不同的war文件中访问相同的ehcache

[英]Accessing same ehcache from 2 different war files

我有2个不同的webapps(包装到不同的war文件中),需要通过缓存(ehcache)共享一些数据。 我想和你一起测试这个想法,看看它是否有效。

我的想法是创建一个服务来引导/访问jar中的ehcache和包。 然后将那个罐装入两场战争中:

  • WAR1:ehcache-service.jar
  • WAR2:ehcache-service.jar

ehcache会在这样的配置下工作吗?

您需要创建一个单独的jar,其中包含您计划缓存的所有类(及其所有依赖项),然后将此jar以及ehcache.jar部署为库(取决于您使用该过程的应用程序服务器)不同),在Tomcat 6的情况下,这意味着只是将罐子复制到lib文件夹。

然后发生的是,ehcache和您的域类将由所有Web应用程序共享的类加载器加载,因此实例将被缓存并可在内存中访问。

域类的依赖关系非常重要,因此您应该了解这种方法在项目中是否可行。 它还可能会影响您重新启动Web应用程序的方式。


此外,您应该知道缓存和共享不一定是必要的。 缓存是一种优化。 如果将对象实例放入缓存中,则可能会立即逐出,例如,如果缓存没有足够的存储空间或驱逐策略配置。 因此,您可能需要查看计划一般使用ecache的方式。

您的配置问题是每个war都将加载单独的ClassLoader,并且将有两个ehcache-service实例 - 每个Web应用程序都有自己的服务副本。 您可以将缓存服务实现为Web服务(例如),并在war1和war2中使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM