问题标签 [ehcache]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
9698 浏览

java - 从 spring 创建 EhCache 缓存的问题

阅读EhCacheManagerFactoryBeanEhCacheFactoryBean的 javadoc我发现:

将创建一个缓存,然后我可以 @Autowired 进入。但我必须遗漏一些东西,因为这是我得到的:

向类 org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanCreationException 的侦听器实例发送上下文初始化事件的异常:在 ServletContext 资源 [/WEB-INF/applicationContext.xml 中定义名称为“locationCache”的 bean 创建错误]: init 方法调用失败;嵌套异常是 java.lang.NoSuchMethodError: net.sf.ehcache.Cache.(Ljava/lang/String;ILnet/sf/ehcache/store/MemoryStoreEvictionPolicy; ZLjava/lang/String;ZJJZJLnet/sf/ehcache/event/RegisteredEventListeners; Lnet/sf/ehcache/bootstrap/BootstrapCacheLoader;II)V

我试过 ehcache 1.7.2、1.6.2 和 1.5.0。

如果我<cache name="locationCache" />在 ehcache.xml 中指定它可以工作,但我更喜欢在 applicationsContext.xml 中完成我的配置

0 投票
2 回答
1818 浏览

hibernate - 带有 Hibernate 和 EHCache 的兵马俑

在http://www.terracotta.org上用产品名称汤头游泳。需要有人帮助澄清我需要什么。

背景:应用程序有一些不使用 Hibernate 的“遗留”持久性代码,但有一个本地缓存实现。新实体启用了休眠。

我想要的是:将 Terracotta 用于 Hibernate 二级缓存。我我然后想滑出本土缓存 impl 并滑入 ehcache(在语义上与本土版本非常相似) - 显然我希望 Terracotta 也支持该 EHCache。

困惑:我会告诉 Hibernate ehcache 是它的缓存提供程序,然后将 ehcache 配置为使用 terracotta?

所以

(hibernate | legacy-persistence)-> ehcache -> terracotta

我在正确的轨道上吗?原谅新手的问题,但是 terracotta.org 网站真的让我很困惑,因为它试图向我推销商业品种。

0 投票
1 回答
1828 浏览

serialization - 避免分布式 EHCache 中的序列化

有没有办法不使用序列化并仍然使用 EHCache 磁盘库。我有嵌套对象,它们不可序列化,必须缓存在分布式 ehcache 中。我可以使用 JMS,避免序列化,并且仍然实现缓存复制。但是有没有办法避免序列化也可以使用磁盘存储?为什么对磁盘存储没有任何类似的支持..可能类似于 xml 序列化。

0 投票
1 回答
2762 浏览

ehcache - 使用ehcache时,我需要做什么同步?

假设我从一个这样的 CacheManager 开始: private static CacheManager manager = CacheManager.create();

当我调用 getCache 或 addCache 时,我需要先在 CacheManager 上进行同步吗?

当我在Cache上调用put或get时,我应该先在Cache上同步吗?

0 投票
2 回答
2572 浏览

hibernate - 如何在 Grails 中临时禁用只读二级缓存休眠策略?

在我的 grails 应用程序中,我的某些域类永远不会被用户更改。

但是,有时需要进行一些维护工作,并且管理员应该能够不时创建/编辑一些实例(假设一年两次)。

我想为这些域类()设置一个只读的二级缓存策略,static mapping = { cache usage: 'read-only' }并且我希望能够“禁用”(在非常特殊的情况下)只读策略,以便通过 Grails 脚手架更新某些实例编辑视图。

是否可以?你建议我怎么做?

编辑:我正在实施的解决方案是 Pascal 和 Burt 答案的混合(见评论)。这两个答案都很棒而且很有帮助。所以我在选择接受的答案时遇到了难题!无论如何,谢谢你。

0 投票
2 回答
2202 浏览

java - Hibernate EntityManager 工厂 - EHCache

我在启动和运行实体管理器工厂时遇到了更多问题。不幸的是,错误信息非常模糊。我不太确定为什么它没有更具描述性,但它就是这样:

休眠启动日志消息(跟踪级别),没有为简洁配置实体(相同的错误消息,除了所有创建此关系的启动消息或...):

它总是在 EHCacheProvider 处死掉。我过去遇到的问题是将我的项目分成 50 个子项目(30 个模型项目、监听器项目、过滤器项目、ui 项目、web 操作项目等)。我的一个项目仍然很有可能没有使用最新版本(尽管不太可能)导致这种类型的错误。

这是我的 log4j 配置。我正在尝试将日志中的内容分开,以便我可以更轻松地辨别问题的来源,并查看解决问题所需的内容。

0 投票
1 回答
1338 浏览

hibernate - 休眠和 ehcache 复制

我正在研究节点之间的缓存复制解决方案

节点 A - 主节点 => Hibernate + 数据库 + Ehcache 作为二级缓存
Node B - 区域节点=> Ehcache 作为主缓存。no Hibernate

Node B 仅用作查询的附近缓存。

现在我正在更新节点 A 中的数据(比如 SudentInfo),它会被正确地持久化和缓存。在复制端(我使用 JMS)它向节点 B 发送一条消息。但问题是,它发送的消息是实例 CacheEntry(deep Inside Element),没有办法恢复原始对象(StudentInfo)。我在节点 B 中得到的是具有一些学生属性的 CacheEntry,但实际上不是学生对象。

请注意,我不需要节点 B 中的休眠会话/持久性,节点 B 仅用于快速查询,持久性是通过节点 A 完成的。那么有人尝试过这样的解决方案吗?有没有办法将 CacheEntry 转换为实际对象?或告诉 ehcache 复制原始对象而不是 CacheEntry。

谢谢您的帮助

0 投票
2 回答
2764 浏览

java - ehcache LRU 驱逐最近使用的条目

使用Ehcache,在 Java 应用程序工作 2.5 天后,我有这个统计信息

最后一个小时看起来像

缓存大小=400000,项目永不过期。

为什么会这样?

0 投票
2 回答
962 浏览

hibernate - Ehcache - 分布式 RMI 不工作

我对 ehcache 2.0 有一个奇怪的问题,希望有人可以帮助我。我已经建立了一个由两台主机 A 和 B 组成的集群。我可以看到两端都收到了心跳,所以我很确定网络和多播工作正常。问题是我将一个元素放入主机 A 的缓存中,我可以在主机 B 的日志中看到它接收到远程放置。但是当我从主机 B 请求相同的元素时,它会运行到数据库并执行查询。这可能是什么原因?感谢您的任何指点!

0 投票
3 回答
14220 浏览

java - ehcache磁盘存储不干净关机

我正在使用具有磁盘存储持久性的缓存。在应用程序的后续重新运行时,我收到以下错误:

除了显式调用net.sf.ehcache.CacheManager.shutdown()应用程序中的某个位置之外,还有什么方法可以解决这个问题?

缓存配置:

复制问题的代码: