问题标签 [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 回答
1917 浏览

java - infinispan中的javax.cache.annotation.CacheResult是否需要方法中的参数

美好的一天,我现在对 infinispan javax.cache.annotation.CacheResultJBoss Enterprise Application Platform 6.1 和 6.3中的实现有点困惑。

我一直在谷歌搜索并浏览stackoverflow,但对于一直让我忙碌的问题,我还没有真正找到明确的答案。所以我走了。注释是否@CacheResult需要其注释的方法中的参数。它使用参数实际为商店创建密钥。然而,它并没有真正记录如果你没有它会发生什么。对于想要返回存储在数据库中的国家/地区列表并且该列表不会经常更改的 Web 应用程序,可能会发生这种情况。

代码示例:

EAP6.1.1的配置

正如您在我的示例中看到的,我想减少代码调用。我将配置设置为每天刷新一次,以确保安全。但我实际上不确定该列表是否已缓存等。因为关于该方法是否没有参数的文档记录太差。

0 投票
1 回答
477 浏览

jakarta-ee - 将 Hazelcast JCache 实现连接到 JSR107 注释的最简单方法

HazelcastJCache 的一个实现。JSR-107 ( JCache) 规范以及编程 API 还指定了注释,因此可以使用 CDI 完成缓存。Hazelcast 博客甚至提供了一个示例,但也指出,Hazelcast 不负责将注释连接到 JCache 实现,这应该由 CDI 容器完成。标准 CDI 容器还没有,但这应该已经是一个已解决的问题。甚至还有一个参考实现,但它广泛警告不要在生产环境中使用。

我们真的坚持使用这个参考实现代码,还是编写我们自己的胶水代码?是否没有真正的、完整的 CDI 解决方案将注释连接到实现?

0 投票
2 回答
891 浏览

caching - 是否可以为 jsr107 的所有缓存提供程序供应商提供通用 xml 配置

我们需要为 Jcache 配置提供通用的 XML 配置参数(例如 timetolive)。
我们正在使用 EhCache 进行开发,并且可能在其他环境中使用其他一些符合 Jsr107 的缓存提供程序,例如 Infinispan。

是否可以让两个缓存提供程序都使用单个配置文件,并且如果需要,我们只需要针对不同的环境更改一些参数?

是否可以在属性文件中定义这些属性并使用它们来根据 Profile 初始化缓存管理器?

我浏览了 jsr107 文档,但没有找到常见的 xml 缓存属性。

技术:Spring Boot 1.2.3,Java 7

0 投票
2 回答
1882 浏览

caching - 我可以将 JCache API 用于 Apache Ignite 中的分布式缓存吗?

我想使用 JCache API (JSR107, javax.cache) 使用 Apache Ignite 配置分布式缓存。这可能吗?

我发现的示例要么使用 JCache API 创建本地缓存,要么使用 Apache Ignite API 创建分布式缓存(或数据网格)。

0 投票
2 回答
970 浏览

java - JCache API jar 的 Maven 坐标是什么?

我有一个可执行的 JAR(不是部署到 Tomcat 等标准容器的 Web 应用程序),它需要连接到数据库并缓存很多东西。

如果可能的话,我想使用JCache API 并(通过 Guice)注入 Hazelcast 实现。我将针对 JCache API 编写 100% 的代码,因此,如果我改变主意并选择另一个实现,那么换出应该(相对)轻松。

一个问题:我在哪里可以获得最新的稳定 JCache JAR?!?(什么是 Maven 坐标?)

Maven Central上,我只能找到2005 年的一些开发JAR !所以我问:JCache 在哪里?

0 投票
2 回答
6402 浏览

java - Spring cache/jsr107:列表/集合参数作为键的一部分

我有一个服务,它调用外部系统通过它们的外部 id 检索某种对象,并将它们提交回更新。与其逐个检索对象,不如使用更通用的方法:

我想在 ExternalSystem 调用之上放置一个缓存,因为它们非常昂贵。

在服务的实现中,我可以简单地放置 spring 注释:

但是,如果我在 externalIds 之间有很多交集,那么这样的缓存会表现得很糟糕,即

  1. 调用#1 getObjects([1,2,3,4]) -> 缓存由 [1,2,3,4] 键放置
  2. 调用#2 getObjects([1,2,3,4,5]) -> 缓存按 [1,2,3,4,5] 键放置
  3. 调用#3 getObjects([6,7,8,9]) -> 缓存按 [6,7,8,9] 键放置
  4. 调用#4 updateObjects( 1 ) -> 驱逐所有缓存,但第三个缓存不包含 3

所以,问题是如何实现自定义策略(我认为它不是开箱即用的),它将只驱逐那些真正应该被驱逐的条目,并使键以这样的方式从缓存中检索相交对象?

更新。我发现了两个类似的问题:

  1. spring-cache-abstraction-with-multi-value-queries
  2. using-spring-cache-on-methods-that-take-an-array-or-collection
  3. spring-cacheable-methods-with-lists

更新2。 这是与我想要的类似的东西,除了我将为集合中的每个项目放入 String 和 ExternalDTO 的缓存对。 列表到列表的元素级缓存

0 投票
2 回答
9851 浏览

spring - 使用带有 Spring Annotations 的 ehcache 3(不使用 Spring Boot)

我试图让 Ehcache 3 在不使用 Spring 启动的情况下与 Spring 4 一起工作。

这是一个使用 Spring Boot 的工作示例,但我正在开发一个不使用 Spring Boot 的现有应用程序。

问题是 spring-context-support (它添加了 Spring 的缓存注释)期望 Ehcache 的 CacheManager 在这个类路径上:net.sf.ehcache.CacheManager

但是,在 Ehcache 3 中,CacheManager 类驻留在另一个类路径中:org.ehcache.CacheManager。

因此,基本上 spring-context-support 不支持 Ehcache 3。您必须直接使用 JSR-107 注释,而不是 Spring 提供的注释。

但显然它适用于 Spring Boot。也许有一种方法可以让它与标准的 Spring 应用程序一起工作。这就是我所希望的。我真的很想使用 Spring 自己的注释而不是 JSR-107 注释。

0 投票
1 回答
376 浏览

java - 如何使用 Apache Ignite 作为 JSR 107 缓存?

我发现 JSR 107 缓存将配置如下:

但是添加后

pom.xml缓存不会在 value-site s 中存储任何值(在https://github.com/krichter722/ignite-storage-failureMap提供了一个示例)。

我想仅使用嵌入式 Ignite 运行本地内存设置。不幸的是,没有关于这个用例的“入门”文档——只有复杂的分布式设置和非 JSR 107/Ignite 特定的配置。

由于这是缓存框架最简单的用例,因此这必须是可能的。

我正在使用 Apache Ignite 1.7.0。

0 投票
3 回答
1163 浏览

java - 如何在 ehCache 3.0 中扩展过期功能

我正在使用 EhCache 核心 3.0。它在内部使用 BaseExpiry 和 Eh107Expiry 类来检查缓存是否过期。这些类实现了 Expiry 接口。我的问题是,我们能否扩展用于检查缓存是否过期的方法。如果我的方法正在使用该缓存中的某些数据,即使时间已过,我也不想使缓存的内容过期。

0 投票
1 回答
2846 浏览

java - EhCache缓存对象修改

我必须使用EhCache实现缓存。基本要求是,我必须将该缓存对象保持固定间隔(现在在下面的代码中为 1 小时)。所以,我实现了如下代码:

示例域对象:

缓存管理器类:

它非常正确地缓存和检索值。但我的要求是,我必须修改从缓存中检索给定键的对象。我得到的是,如果我修改从缓存中检索到的对象,那么该键的缓存对象也会被修改。

下面是示例:

我得到的输出是:

这意味着,每当我检索和修改给定键的对象时,它也会反映在缓存值中。

我的要求是,不应该修改给定键的缓存对象。有什么办法可以做到这一点?或者它是不是实现 EhCache 的正确方法?或者我错过了一些基本原则?

我正在使用 EhCache V2.10.3

谢谢!