声明式缓存容器设置——这可能吗?
Declarative cache container setup — is it possible?
我正在使用 Wildfly 10.1.0 + Infinispan 8.2.4.Final + cache API 1.0.0 尝试以最小的努力在我的应用程序中启用 Infinispan Jcache 拦截器,如果没有编程设置可能的。
我想做这样一个注释来存储一些字典:
@CacheResult(cacheName = "dictionary", cacheKeyGenerator = MyCacheKeyGeneratorImpl.class)
public List getDictionary() {
...
}
我最初开始这个 activity 是因为我错过了 Spring @Cacheable
注释(我们目前不使用 Spring config/CDI,只有几个库像 Spring 数据 JPA 存储库)。
所以我下载了 Infinispan Wilfly/EAP 模块,将其解压到 Wilfly 模块文件夹并将其添加到 jboss-deployment-structure.xml:
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
<dependencies>
<module name="org.infinispan" slot="ispn-8.2" services="export"/>
<module name="org.infinispan.cdi" slot="ispn-8.2" services="export"/>
<module name="org.infinispan.jcache" slot="ispn-8.2" services="export"/>
</dependencies>
</deployment>
</jboss-deployment-structure>
现在注释已处理,一些默认缓存容器用于创建 "dictionary" 缓存。现在我想微调这个缓存容器。
注入 infinispan 配置的常用方法是什么?是否可以将模块设置插入主 Wilfly 配置文件 (standalone.xml) 以像这样定义缓存容器,或者在单独的文件中指定它们?
<cache-container name="JCacheContainer" default-cache="default" module="org.infinispan.jcache">
<local-cache name="default">
<transaction mode="NONE"/>
<eviction strategy="LRU" max-entries="1000"/>
<expiration max-idle="3600000"/>
</local-cache>
<local-cache name="dictionary">
<locking acquire-timeout="15000" isolation="REPEATABLE_READ"/>
<transaction locking="PESSIMISTIC" mode="NONE"/>
<eviction strategy="LRU" max-entries="100000"/>
<expiration lifespan="15000" max-idle="15000"/>
</local-cache>
</cache-container>
非常感谢任何帮助。
可以在 Infinispan Integration Tests 中找到此类配置的工作示例。唯一的区别是 Infinispan 部署在 WAR 文件中,而不是放在模块中。
你需要做的就是将 infinispan.xml
放入 WEB-INF 目录并使用适当的 beans.xml
.
另一个使用模块和 CDI 的示例可以在 JBoss Data Grid Quickstarts 中找到。该示例中唯一缺少的是 JCache。
最后,您可能会对 Infinispan 用户指南中的 JCache documentation paragraph 感兴趣。
我正在使用 Wildfly 10.1.0 + Infinispan 8.2.4.Final + cache API 1.0.0 尝试以最小的努力在我的应用程序中启用 Infinispan Jcache 拦截器,如果没有编程设置可能的。 我想做这样一个注释来存储一些字典:
@CacheResult(cacheName = "dictionary", cacheKeyGenerator = MyCacheKeyGeneratorImpl.class)
public List getDictionary() {
...
}
我最初开始这个 activity 是因为我错过了 Spring @Cacheable
注释(我们目前不使用 Spring config/CDI,只有几个库像 Spring 数据 JPA 存储库)。
所以我下载了 Infinispan Wilfly/EAP 模块,将其解压到 Wilfly 模块文件夹并将其添加到 jboss-deployment-structure.xml:
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
<dependencies>
<module name="org.infinispan" slot="ispn-8.2" services="export"/>
<module name="org.infinispan.cdi" slot="ispn-8.2" services="export"/>
<module name="org.infinispan.jcache" slot="ispn-8.2" services="export"/>
</dependencies>
</deployment>
</jboss-deployment-structure>
现在注释已处理,一些默认缓存容器用于创建 "dictionary" 缓存。现在我想微调这个缓存容器。 注入 infinispan 配置的常用方法是什么?是否可以将模块设置插入主 Wilfly 配置文件 (standalone.xml) 以像这样定义缓存容器,或者在单独的文件中指定它们?
<cache-container name="JCacheContainer" default-cache="default" module="org.infinispan.jcache">
<local-cache name="default">
<transaction mode="NONE"/>
<eviction strategy="LRU" max-entries="1000"/>
<expiration max-idle="3600000"/>
</local-cache>
<local-cache name="dictionary">
<locking acquire-timeout="15000" isolation="REPEATABLE_READ"/>
<transaction locking="PESSIMISTIC" mode="NONE"/>
<eviction strategy="LRU" max-entries="100000"/>
<expiration lifespan="15000" max-idle="15000"/>
</local-cache>
</cache-container>
非常感谢任何帮助。
可以在 Infinispan Integration Tests 中找到此类配置的工作示例。唯一的区别是 Infinispan 部署在 WAR 文件中,而不是放在模块中。
你需要做的就是将 infinispan.xml
放入 WEB-INF 目录并使用适当的 beans.xml
.
另一个使用模块和 CDI 的示例可以在 JBoss Data Grid Quickstarts 中找到。该示例中唯一缺少的是 JCache。
最后,您可能会对 Infinispan 用户指南中的 JCache documentation paragraph 感兴趣。