问题标签 [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.
spring - 使用 @CacheResult 时对参数调用静态方法
我需要缓存调用 web 服务的方法的结果。方法签名是这样的:
结果取决于所有参数
我为缓存创建了 ehcache 配置myCache
,通常要使用此缓存,我应该使用@CacheResult
注释:
但在我的情况下,我需要在参数上调用静态方法,我想以与注释date
相同的方式执行此操作:@Cacheable
我的问题是如何在使用时对参数调用静态方法 @CacheResult
?
spring-boot - Jcache 的缓存关键问题
我在 Springboot 中使用 JSR107 缓存。我有以下方法。
第一次进行实际的 API 调用,第二次加载缓存没有问题。我可以看到日志的以下部分。
但问题是我想加载缓存而不进行第一次 API 调用,只需要像下面这样填充缓存。
当我检查时,缓存键的哈希码在两种情况下都是相同的,但它正在进行 API 调用。如果两种情况下的哈希码相同,为什么不考虑缓存就进行 API 调用?
在调试 spring 类时发现,org.springframework.cache.interceptor.SimpleKeyGenerator 与缓存键生成一起使用,即使 @CacheResult 在那里。 编辑并增强问题:
除此之外,如果 getAllBooks 具有重载方法,然后通过单独的重载方法调用此缓存方法,在这种情况下,方法缓存也不起作用。
java - 咖啡因或任何 JVM 缓存 API 的驱逐事件侦听器?
这里是 Java 8。当记录被逐出缓存时,是否有任何方法可以通知Caffeine缓存框架(或任何其他 JSR-107 兼容框架)?
也许某种EvictionEventListener
或什么?
咖啡因、番石榴、Hazelcast(基本上是“ JVM 缓存区”)等中是否有类似的东西?
spring - Spring JCache 记录缓存命中
我有一个方法,我通过添加 @CacheResult 注释来添加缓存(我实际上创建了一个代理,因为我无法更改 的原始实现SomethingService
):
我现在需要的是能够记录缓存命中,这意味着返回的结果是来自缓存的结果。我查看了 Spring Cache、JCache 和 EHCache(我使用的实现),我只找到了侦听(使用侦听器)以下事件的方法:CREATED、UPDATED、REMOVED、EVICTED、EXPIRED 但它们都没有缓存返回结果(非空)时的事件。
我真的不想更改实现以编程方式使用缓存而不是使用注释(我实际上有很多服务要更改,而不仅仅是一个),是否有一种好方法来记录这些事件?
java - 具有多个缓存提供程序的 JCache?
我故意在我的类路径中有几个不同的缓存提供程序。我有用于分布式缓存的 Hazelcast 和用于本地缓存的 Caffeine。我正在尝试使用 JCache (JSR107) 注释来缓存我的值。
我已经创建了一个 CacheResolverFactory,它将能够检测从哪个提供者(基于方法注释)使用哪个缓存管理器,但是当我启动我的应用程序时,我收到以下错误消息:
显然,我知道我有多个缓存提供程序。但是,我似乎无论如何都找不到这个问题。该类org.jsr107.ri.annotations.cdi.CacheLookupUtil
有一个私有 CacheResolverFactory 成员,该成员在构造时初始化为 DefaultCacheResolverFactory(),它需要一个 CacheProvider。
我能做些什么来规避这个问题吗?JCache只能与 1 个缓存提供程序一起使用吗?并且CacheLookupUtil
该类被字段@Inject
编辑到所有注释处理器中。
我唯一的选择是覆盖所有拦截器(并提供自定义拦截器)并创建自己的 CacheLookupUtil 实现吗?或者还有什么我可以做的吗?
hazelcast - 无论如何要从 Hazelcast 中查看缓存条目元数据(即:添加日期、上次访问等)?
我在嵌入式模式下使用带有分布式缓存的 Hazelcast。我的缓存是用驱逐策略和过期策略定义的。
我遇到的问题是我的侦听器似乎在生产环境中过早触发;即使最近查询了缓存,侦听器也会被执行(删除)。
当过期监听器触发时,我得到了 CacheEntry,但我希望能够看到过期的原因,它是被驱逐(由于 MaxSize 策略)还是过期(持续时间)。如果已过期,我想查看上次访问时间的时间戳。如果被驱逐,我想查看缓存中的条目数等。
这些统计/指标/元数据是否可以通过 Hazelcast API 在任何地方获得?
hazelcast - 有没有办法修改已以声明方式声明的 JCache 的过期策略?
我正在使用 Hazelcast 3.12 jCache 实现。我的缓存已声明(通过 hazelcast-config.xml),但是我希望能够动态更改 ExpiryPolicy 的持续时间,因为超时值只能以编程方式使用。
我查看了 ICache 的文档,但没有看到任何可以让我检索和/或修改整个缓存的过期策略的方法。
我的缓存声明为:
我想在检索到到期政策时设置/更新到期政策:
使用 jCache 或 Hazelcast API 是否可行?
spring-boot - Hystrix javanica缓存和JCache
我有一个带有 Hystrix(Javanica)和 JCache(EHCache 实现)的 SpringBoot(2.1.7)应用程序。我@HystrixCommand
有用注释注释的方法来为它们启用 Hystrix。我也对这些方法进行了缓存。它看起来像这样:
现在我正在查看文档,实际上有 2 个不同的@CacheResult
注释:一个来自 JCache (jsr-107),一个来自 Javanica (Hystrix)。
如果我还希望 Hystrix 使用缓存,我是否也应该指定第二个@com.netflix.hystrix.contrib.javanica.cache.annotation.CacheResult
?
或者我可以更好地移动@CacheResult
到方法getAllUserProfilesFromBackend
,然后用 Hystrix 注释 Hystrix 方法@CacheResult
吗?
我只是想知道,因为 Hystrix 框架可以在服务失败的情况下使用缓存,但我不清楚它是否自动使用 JCache。
java - JCache 键异常
我有一个必须缓存的方法。我有一个带有 JSR-107 (JCache) 缓存的 SpringBoot 2.1.7 应用程序。使用的缓存实现:EHCache 3.8.0。
CacheDefaults(cacheName = "profileCache")
当我使用注释时,该类被注释:@EnableCaching
在我的 SpringBoot 入门类上,尝试访问该方法时出现此异常:
这是缓存规范:
当我将注释更改为它时,@EnableCaching(mode = AdviceMode.ASPECTJ)
它确实有效。这是一个错误还是我在这里做错了什么?
wildfly - 为什么包含在 Infinispan 的白名单中的类仍然会抛出错误“未注册编组器”?
我正在使用 Infinispan 10 和 Wildfly 17。我有一个 infinispan.xml 文件,其中包含我指定编组器的类白名单:
我遵循了这个文档,第 9.1.2 章 Java Serialization Marshaller
但它似乎不适用于特定的类,即 org.jsr107.ri.annotations.DefaultGeneratedCacheKey。错误信息是:
如何将该类添加到 Infinispan 的白名单?
更多信息:
我在启动时加载 CacheManager,如下所示:
我的 pom.xml 中的 Infinispan 依赖项:
在standalone.xml 中,这就是我发现的与Infinspan 相关的全部内容。