问题标签 [jsr107]

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 回答
2176 浏览

caching - 在 ehcache 3.1.2 中启用 JMX 支持

我正在使用camel 2.18.1 和camel-ehcache 组件来构建一个简单的缓存。虽然缓存设置工作正常,但我发现使用 ehcache 3.1.2 注册 mbean 很困难(这是通过骆驼拉入的)。

阅读文档 - 目前尚不清楚如何启用对 3.x 的支持,因为 API 上不再提供使用 ManagementService 注册 mbean 的标准方式。

该文档与纯 ehcache 实现和 JSR-107 缓存实现有点混淆。

尽管 JSR-107 JCache 实现具有打开 JMX 支持的选项,但连接 xml 配置并启动缓存看起来会在缓存启动时引发异常:

我的 xml 配置供参考如下:关于如何启用对 ehcache 3.x 的 JMX 支持以及需要哪些额外依赖项的任何指针?

0 投票
1 回答
49 浏览

java - 如何使 Spymecached 适应 net.sf.jsr107cache.Cache?

我需要针对net.sf.jsr107cache.Cache使用 Java net.spy.memcached包(对于 Redis Cloud Memcached)编写一个新的实现。该包不包含此接口的实现。我当然可以Cache自己编写一个适配器并实现,但是功能上存在一些差异

  • Object钥匙,不仅仅是String钥匙,在Cache但不是在间谍
  • clear()
  • putAll()
  • size()

鉴于 memcached 和 JSR-107 都是标准——有一种标准方法可以使 Spy 适应 JSR-107?

0 投票
1 回答
551 浏览

caching - 禁用/关闭 Ehcache3

有人知道如何在应用程序中关闭 ehcache 3 吗?(例如,用于测试目的或生产中的回退场景)

  • 对于 ehcache 2,这可以通过:net.sf.ehcache.disabled=truehere所述
  • 如何禁用 ehcache3 中的所有缓存(首选通过 ehcache.xml)?
    • org.ehcache.core.Ehcache不包含任何禁用功能
    • 设置是否 <heap unit="MB">0</heap>有效ehcache.xml
    • 我使用带有 ehcache3 的 JCache(又名 JSR-107)作为实现,也许这提供了更多选择?
0 投票
2 回答
2419 浏览

caching - 锁定榛树集群中的钥匙

我正在编写一个使用 Hazelcast(JCache 标准)进行缓存的分布式应用程序。

我有一个用例,我应该锁定集群中的特定键,以防止在更新期间调用。

  1. thread1:获取 item1 以进行配置更改(加锁)
  2. thread2:获取 item1 进行更新。
  3. thread2:将 item1 与更新和新时间戳一起放入。
  4. thread1:将 item1 与旧值和时间戳一起放置

我知道 EhCache 有一些非常相似的东西,它叫做acquireReadLockOnKey(Object key)。

如何使用 JCache 和/或 Hazelcast 实现这种锁定?

0 投票
1 回答
4034 浏览

java - Springboot 和 Ehcache - MultiCacheException

我正在尝试向 springboot 应用程序添加缓存,但我遇到了一个问题,即在启动期间抛出 org.ehcache.jsr107.MultiCacheException 异常。

我正在使用以下(全部通过 Maven pom 文件加载):Springboot 1.5.5、Ehcache 3.3.1、Javax 缓存 1.0.0

我的 SpringBootApplication 看起来像这样:

我有一个 CacheConfig 类,其中包含以下内容:

我的 ehcache.xml 文件包含:

测试项目服务包含:

最后,application.properties 包含:

当我运行应用程序时,我得到以下异常结尾:

我不确定该去哪里,因为我几乎复制了在此站点上找到的内容: http ://www.ehcache.org/blog/2016/05/18/ehcache3_jsr107_spring.html

任何见解将不胜感激。

谢谢。

0 投票
1 回答
201 浏览

java - 使用 guice 在 playframework 中缓存注释

我正在尝试插入此处提到的 cache-annotations-ri-guice 。我找到了描述。但它不起作用。我的测试项目看起来像

此调用每次返回不同的值。

构建.sbt:

模块.java:

我的环境: addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.6.3") sbt.version=0.13.15 如何让它正常工作?

0 投票
1 回答
646 浏览

ehcache - 如何使用 Ehcache 为 JSR-107 (JCache) 配置 XML 中的自定义序列化器/复制器?

我有一个关于 JCache / Ehcache XML 配置的问题。

我将 JSR 107 Cache Annotations CDI Reference Implementation 与 Ehcache 一起使用。

我想用@CacheResult 注释特定方法,以便这些方法的结果将缓存在为该特定方法生成的缓存中。在我们的例子中,这些方法的返回值是 Optional,你可能知道,Optional 实例是不可序列化的,因此默认情况下不能被缓存。默认使用的 SerializingCopier 和 PlainJavaSerializer 在此失败。

为了解决这个问题,我实现了我们自己的自定义 OptionalSerializer 和 OptionalCopier 来处理 Optional 值。

但是当涉及到可选返回值时,我无法让 JCache / Ehcache 清楚地使用我的自定义序列化程序和复印机。我尝试将 ehcache.xml 放在 JBoss EAP 6.4.0 的类路径中(使用 JBoss 模块),并尝试将 ehcache.xml 放在 Maven 模块的资源文件夹中,但它们只是被忽略了。即使我使这些 XML 无效,我也不会收到任何错误。

我想避免创建 CacheManager,以编程方式引用我们自己的 ehcache.xml 配置文件,因为那时我必须创建缓存。我不想要这个。我希望缓存由 Cache Annotations CDI CacheResultInterceptor 创建,而且我似乎没有选项可以覆盖创建自己的 CacheManager 的方法...

有谁知道我应该怎么做才能解决这个问题?我只想使用提供的拦截器,并有一个 XML 配置,指定自定义序列化器和复制器将需要用于特定的返回类型。

豆类.xml:

示例方法:

您当前使用的 Ehcache 版本;Ehcache 3.4.0

粘贴您遇到问题的 Cache/CacheManager 的配置;

添加您使用 Ehcache 的其他库或框架的任何名称和版本(例如 Hibernate);

  • Java EE 6
  • EJB 3.x
  • CDI 1.x
  • JCache 1.0.0 (JSR 107)
  • JSR 107 缓存注释 CDI RI 1.0.0

提供 JDK 和 OS 版本也可能有用。

  • Java SDK 1.8 更新 65
  • JBoss EAP 6.4.0
  • 视窗 10
0 投票
1 回答
59 浏览

java - 理解@Enable...注解并发

我们有一个使用 spring-boot-cache-starter 的项目,注册一个实现,并在代码中ehCache CacheManager传播。@Cacheables

然后,其他一些团队创建了一个 starter,它基本上依赖于spring-boot-cachestarter (hashmap) 自动配置的默认配置来处理自己的@Cacheable方法。

两个代码都包含@EnableCaching注释,我们的问题是,如果我们注释主项目的 @EnableCaching 注释,行为会有所不同。

  1. 如果我们不在@EnableCaching我们的项目中评论,当我们使用自定义启动器时,一切正常。@Cacheablesfrom the starter 在 starter 范围内被索引和解析,但从 @Cacheables我们的域被解析在我们的ehcache.
  2. 如果我们@EnableCaching在我们的项目中发表评论,那么启动器和我们的项目都会@Cacheables尝试针对我们的ehCache实现来解决。

这打破了我迄今为止的许多先入之见:

  1. 我一直认为诸如@Enable... 之类的注释适用于所有上下文,无论放置(启动器/应用程序配置)如何,也无论在扫描所有@Configuration类时是否找到一次或两次。

  2. 为什么当两个注释都存在时案例会起作用,我猜CacheManagerspring-boot-cache-starter 中的 是 a @ConditionalOnBean,所以在这种情况下,我希望两个项目都使用ehcachebean 进行解析,而不是每个项目的域

PS@EnableCaching在我们的主项目中找到的放在一个内部静态@Configuration 类上。这可能很重要吗?

0 投票
1 回答
1040 浏览

java - Redisson(通过 JCache API)仅反序列化为 String

我有一个 Redisson 客户端来存储一对字符串 LocalDateTime。它被配置为通过 JCache API (JSR-107) 使用。

存储完成,使用 Jackson 转换为类似但检索的值不使用任何转换器并返回字符串,在调用2018-01-23T11:59:34.997834中给出 ClassCastException 。cache#get

我在这里想念什么?

0 投票
1 回答
586 浏览

spring-mvc - EHCache+Tomcat+Terracota+Jsr107+Spring+@CacheEvict(allEntries=true) = UnsupportedOperationException: 实现我

我设法将 EhCache 与 Terracota 一起用于分布式集群(项目位于https://github.com/ehcache/ehcache3/releases/download/v3.4.0/ehcache-clustered-3.4.0-kit.zip)并进行了 Spring 配置集成如:

然后,在管理器上:

缓存似乎工作正常。在测试(Junit 或手动启动 tomcat)时,findAll 和 findById 函数在第一次尝试后会加速很多。

但是在尝试保存时,出现异常:

这里有什么想法吗?非常感谢您提前。