问题标签 [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.
java - 从 spring 创建 EhCache 缓存的问题
阅读EhCacheManagerFactoryBean和EhCacheFactoryBean的 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 中完成我的配置
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 网站真的让我很困惑,因为它试图向我推销商业品种。
serialization - 避免分布式 EHCache 中的序列化
有没有办法不使用序列化并仍然使用 EHCache 磁盘库。我有嵌套对象,它们不可序列化,必须缓存在分布式 ehcache 中。我可以使用 JMS,避免序列化,并且仍然实现缓存复制。但是有没有办法避免序列化也可以使用磁盘存储?为什么对磁盘存储没有任何类似的支持..可能类似于 xml 序列化。
ehcache - 使用ehcache时,我需要做什么同步?
假设我从一个这样的 CacheManager 开始: private static CacheManager manager = CacheManager.create();
当我调用 getCache 或 addCache 时,我需要先在 CacheManager 上进行同步吗?
当我在Cache上调用put或get时,我应该先在Cache上同步吗?
hibernate - 如何在 Grails 中临时禁用只读二级缓存休眠策略?
在我的 grails 应用程序中,我的某些域类永远不会被用户更改。
但是,有时需要进行一些维护工作,并且管理员应该能够不时创建/编辑一些实例(假设一年两次)。
我想为这些域类()设置一个只读的二级缓存策略,static mapping = { cache usage: 'read-only' }
并且我希望能够“禁用”(在非常特殊的情况下)只读策略,以便通过 Grails 脚手架更新某些实例编辑视图。
是否可以?你建议我怎么做?
编辑:我正在实施的解决方案是 Pascal 和 Burt 答案的混合(见评论)。这两个答案都很棒而且很有帮助。所以我在选择接受的答案时遇到了难题!无论如何,谢谢你。
java - Hibernate EntityManager 工厂 - EHCache
我在启动和运行实体管理器工厂时遇到了更多问题。不幸的是,错误信息非常模糊。我不太确定为什么它没有更具描述性,但它就是这样:
休眠启动日志消息(跟踪级别),没有为简洁配置实体(相同的错误消息,除了所有创建此关系的启动消息或...):
它总是在 EHCacheProvider 处死掉。我过去遇到的问题是将我的项目分成 50 个子项目(30 个模型项目、监听器项目、过滤器项目、ui 项目、web 操作项目等)。我的一个项目仍然很有可能没有使用最新版本(尽管不太可能)导致这种类型的错误。
这是我的 log4j 配置。我正在尝试将日志中的内容分开,以便我可以更轻松地辨别问题的来源,并查看解决问题所需的内容。
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。
谢谢您的帮助
hibernate - Ehcache - 分布式 RMI 不工作
我对 ehcache 2.0 有一个奇怪的问题,希望有人可以帮助我。我已经建立了一个由两台主机 A 和 B 组成的集群。我可以看到两端都收到了心跳,所以我很确定网络和多播工作正常。问题是我将一个元素放入主机 A 的缓存中,我可以在主机 B 的日志中看到它接收到远程放置。但是当我从主机 B 请求相同的元素时,它会运行到数据库并执行查询。这可能是什么原因?感谢您的任何指点!
java - ehcache磁盘存储不干净关机
我正在使用具有磁盘存储持久性的缓存。在应用程序的后续重新运行时,我收到以下错误:
除了显式调用net.sf.ehcache.CacheManager.shutdown()
应用程序中的某个位置之外,还有什么方法可以解决这个问题?
缓存配置:
复制问题的代码: