问题标签 [jcache]

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 投票
3 回答
1163 浏览

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

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

0 投票
2 回答
2094 浏览

java - Spring Boot 中的 Hazelcast 和 JCache 创建两个实例

使用 JCache 并启用缓存时,默认的 Spring boot 自动配置似乎会创建两个 hazelcast 实例(@EnableCaching

完整示例位于:https ://github.com/dirkvanrensburg/hazelcast-springboot-jcache

TLDR; 当通过 JCache 启用缓存时,有没有办法让 Spring Boot 的自动配置只创建一个 Hazelcast 实例?

我通过添加以下依赖项创建了一个演示 Spring Boot 项目:

并添加@EnableCaching到 Application 类中,Spring 将自动配置 Hazelcast 但启动两个 hazelcast 实例,如日志所示,它们加入集群:

缓存有效,但我不想要两个 Hazelcast 实例。

哈克

我设法通过提供自己的缓存管理器使其工作:

并删除hazelcasthazelcast-spring依赖项并添加hazelcast-all

但问题仍然是是否有更好的“正确”方法来实现这一目标?理想情况下,无需定义自定义缓存管理器并添加hazelcast-all

0 投票
1 回答
717 浏览

java - 如何使用编程配置/不使用 XML 实例化 Ignite CacheManager

我想创建一个具有编程配置的 Ignite 节点。应用程序需要 javax.cache.CacheManager-object。

我知道我可以使用以下代码启动一个 Ignite 节点:

前两个方法调用得到一个 Ignite 对象作为返回值。最后一个得到一个 CacheManager 对象作为返回值。但我需要这样的东西:

有一个方法 org.apache.ignite.cache.CachingProvider.findManager(Ignite) 具有返回类型 javax.cache.CacheManager (这是我想要的),但返回值始终为空。

有没有办法在没有 xml-config 的情况下获取 javax.cache.CacheManager-object ?

0 投票
1 回答
565 浏览

hazelcast - Hazelcast 是否尊重默认缓存配置

在 hazelcast 文档中,有一些对名为“default”的缓存的简短引用 - 例如,这里:http: //docs.hazelcast.org/docs/3.6/manual/html-single/index.html#jcache-declarative -配置

后来这里又提到了缓存默认配置:http: //docs.hazelcast.org/docs/3.6/manual/html-single/index.html#icache-configuration

我想要的是能够配置创建缓存时继承的“默认”设置。例如,给定以下配置片段:

我希望通过以下测试:

Ehcache 有一个“模板”机制,我希望我能得到类似的行为。

0 投票
1 回答
338 浏览

java - JCache:基于声明性配置以编程方式构建复制缓存

我使用 JCache 和 Infinispan 作为它的实现。JCache 没有提供任何与集群相关的 API,所以我在 XML 配置文件中定义了简单的复制缓存配置:

现在要创建用户缓存,我需要将此声明性配置与编程配置结合起来,因为应该从数据库中检索一些缓存属性的值(例如过期超时)。有没有办法只使用 JCache 中的类和接口?

0 投票
2 回答
1689 浏览

java - javax.cache 按引用存储与按值存储

我是 Java 缓存的新手,我尝试了解按值存储与按引用存储之间的区别。

我在下面引用了 java.cache 文档中的段落“将条目存储在缓存中并再次从缓存返回时复制条目的目的是允许应用程序继续改变键和值的状态而不会导致侧面-对缓存持有的条目的影响。”

上面提到的“副作用”是什么?以及我们在实践中如何选择存储方式?

0 投票
0 回答
65 浏览

java - Google App Engine - Jcache 经常被驱逐

我已经使用 JCache API 设置了一个 Memcache 来与之交互。缓存构建如下:

我的缓存使用名称“dropDownCache”注册。缓存包含一个键,“innerCache”,其值包含一个映射。该地图包含一组键值,代表下拉菜单的索引内容。

我有一个 cron 作业/任务每分钟都会访问缓存,以确保缓存不会被驱逐。根据文档,我认为我不需要这样做,因为我没有指定驱逐时间,所以密钥永远不会过期。但是,它确实向我表明,在很长一段时间内,缓存很少被驱逐。

问题是,当我自己或其他用户实际使用下拉菜单访问 webapp 上的页面时。当页面出现时,下拉菜单最终会从数据存储中加载,因为注册的缓存不再存在。缓存最终经常丢失,我不明白为什么这与我在 cron 作业/任务中看到的形成鲜明对比。

也许将 Map 作为键存储是不合适的?不过这似乎是合理的。

任何帮助找出我的缓存被驱逐的原因都会有很大帮助。或者有没有办法弄清楚它被驱逐的确切原因?

0 投票
0 回答
679 浏览

hazelcast - Wildfly 10.1 的 Hazelcast 3.8 模块和配置可能性?

我喜欢使用 Wildfly 10.1 和 Hazelcast 3.8 对 JEE 环境进行原型设计。到目前为止,我只对古老的 JBoss 4.2.3.GA 有经验。

我已经在https://github.com/hazelcast/hazelcast-ra下找到了基于旧 hazelcast 3.6 的现有资源适配器实现。不幸的是,我无法在 Wildfly 10.1 上按原样部署它因为 IronJacamar 抱怨缺少 equals/hashCode 方法(这是不正确的,因为它们在源代码中被明确覆盖。部署 git master 的自建快照具有相同的问题)。

我最终将 ra.xml 配置代码迁移到正确的 javax.resource.spi 注释(@Connector、@ConfigProperty、@ConnectionDefinition)并添加了 javax.resource.Referenceable 接口实现(不知道这是否有必要)。hazelcast 3.8 的步骤要容易得多 - 只需向 HazelcastConnectionImpl 添加缺少的接口方法。

我仍然在为部署/配置而苦恼,所以这是我的问题:

  1. JCA 适配器的部署结构应该是什么样的?我测试了以下方法:

    • 一体机: RAR 文件,包含所有、 、cache-api-1.0.0.jarhazelcast-3.8.jar部署描述符。hazelcast-client-3.8.jarmy-hazelcast-ra-impl.jar

    • By - Libraryjavax.cache.api:在. cache-api-1.0.0.jar_ _ _ RAR 文件包含和部署描述符。com.hazelcast.hazelcasthazelcast-3.8.jarhazelcast-client-3.8.jar${WILDFLY_HOME}/modules/jboss-deployment-structure.xmlmy-hazelcast-ra-impl.jarhazelcast.xml

    • By - Adaptermy.hazelcast.racache-api-1.0.0.jar在. _ RAR 文件包含、和部署描述符。my-hazelcast-ra-impl.jar${WILDFLY_HOME}/modules/jboss-deployment-structure.xmlhazelcast-3.8.jarhazelcast-client-3.8.jarhazelcast.xml

  2. 将 hazelcast.xml 配置文件部署到 Wildfly 10.1 的合适位置在哪里?看来我需要将它打包到 ResourceAdapterImpl 类( my-hazelcast-ra-impl.jar) 旁边,以便类加载器找到它并更喜欢它而不是 hazelcast-default.xml。它仅包含全局配置选项,如组/网络。没有缓存定义,因为应该通过 CDI 按需配置/创建缓存。

    • 有没有类似conf文件夹的东西,我可以在其中部署hazelcast.xml与二进制 RAR 内容分开的文件?如果它可以被热部署(用于原型设计)那就太好了,但这不是强制性的。
    • 它应该以某种方式放置在standalone.xml 中的子系统配置中吗?我为 infinispan 子系统找到了类似的缓存容器配置,但不知道如何使其适应 hazelcast(因为它不是自己的子系统)。
  3. 在 Wildfly 管理 web 界面中,我可以在 Depoyments 和 JNDI 视图中找到已部署的 RAR,但它未在 Configuration -> Subsystems -> Resource Adapters 下列出。我可以在那里创建一个新条目,但没有发现任何优势。这个配置选项是什么意思?

先感谢您

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 实现这种锁定?