我在为infinispan配置jdbc-store时遇到了一些问题。 我已经定义了一个本地缓存与此配置:在wildfly-8.1.0中使用jdbc-store的infinispan .Fianl
<cache-container name="MyCacheContainer">
<local-cache name="MyCache">
<expiration max-idle="60000" interval="6000"/>
</local-cache>
</cache-container>
我需要坚持的缓存,所以我尝试使用JDBC的存储,使用此数据源
<datasource jta="true" jndi-name="java:jboss/datasources/MyDS" pool-name="MyDS" enabled="true" use-ccm="true">
<connection-url>jdbc:h2:file:${jboss.server.data.dir}/db;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
<driver-class>org.h2.Driver</driver-class>
<driver>h2</driver>
<security>
<user-name>abc</user-name>
<password>abc</password>
</security>
</datasource>
当我尝试配置JDBC店在wildfly Web控制台我有这个错误:
Internal Server Error
{
"outcome" => "failed",
"result" => {"step-1" => undefined},
"failure-description" => "JBAS014883: No resource definition is registered for address [
(\"subsystem\" => \"infinispan\"),
(\"cache-container\" => \"MyCacheContainer\"),
(\"local-cache\" => \"MyCache\"),
(\"jdbc-store\" => \"JDBC_STORE\")
]",
"rolled-back" => true
}
如果我手动编辑standalone.xml添加此CONFIGS
<cache-container name="MyCacheContainer">
<local-cache name="MyCache">
<expiration max-idle="60000" interval="6000"/>
<string-keyed-jdbc-store preload="false" passivation="false" purge="false" datasource="java:jboss/datasources/MyDS"/>
</local-cache>
</cache-container>
我对分贝通常的高速缓存序列化,但按预期的数据从数据库(而不是从内存中)每60000毫秒,无论是空闲的也删除它不工作。所以,如果我重新启动wildfly缓存是空的。 此外我注意到Web控制台仍然说在disableb中的jdbc-store,如果我使用文件存储而不是jdbc-store所有工作正常,所以我怀疑在我的配置中存在一些问题。
快速提示:我可以看到您已经配置了选项preload =“false”。如果您重新启动Wildfly(使用您的缓存),那么数据将不会从商店预加载,因此缓存将为空。如果您的商店中有一些持久条目,则应在请求时延迟加载。尝试在重新启动的缓存中获取(some_key)。你使用什么版本的Infinispan? – tsykora 2014-09-24 08:08:13
@tsykora谢谢你的回复。我试图获得一个条目,缓存是空的。按照预期,配置文件相同,但文件存储工作正常。我使用infinispan 6.0.2.Final – codadilupo 2014-09-24 09:09:23
嗯奇怪。可能是一个错误。你也尝试过二进制密钥存储吗? +尝试删除到期设置,看看会发生什么。并感谢您的信息! – tsykora 2014-09-24 09:44:28