我在尝试使用JBoss AS 7.1.1.Final上的infinispan-cdi版本5.1.5.FINAL进行小型测试时遇到了麻烦。我确实尝试过快速入门,一切正常。
错误是:
17:28:05,963 ERROR [org.infinispan.loaders.file.FileCacheStore] (http - 0.0.0.0-8080-1)ISPN000062:从文件读取时出错: d:\ jboss的\独立\ DATA \学习\学习缓存\ 1450574848: 抛出java.lang.ClassNotFoundException: 来自[Module。的org.infinispan.cdi.interceptor.DefaultCacheKey 来自本地模块加载器的“org.jboss.as.clustering.infinispan:main” @ 43f46f3b(roots:D:\ jboss \ modules)]
在maven POM文件上我有
<dependency>
<groupId>org.infinispan</groupId>
<artifactId>infinispan-cdi</artifactId>
<version>5.1.5.FINAL</version>
</dependency>
和
<manifestEntries>
<Dependencies>org.infinispan</Dependencies>
</manifestEntries>
在jboss standalone-ha.xml上我有:
<subsystem xmlns="urn:jboss:domain:infinispan:1.2" default-cache-container="learning">
<cache-container name="learning" default-cache="learning-cache">
<local-cache name="learning-cache" start="EAGER">
<eviction strategy="LRU" max-entries="2"/>
<file-store/>
</local-cache>
</cache-container>
</subsystem>
要在java上设置缓存我有:
public class Config {
@Resource(lookup = "java:jboss/infinispan/container/learning")
@Produces
EmbeddedCacheManager defaultCacheManager;
}
使用的数据是:
public class User implements Serializable{
private static final long serialVersionUID = -577278578670082130L;
private long id;
private String name = "abs";
... getters and setters...
}
我在服务上使用拦截器,例如:
@CacheResult(cacheName = "learning-cache")
public User findUser(String id) {
User user = new User();
user.setName(id);
return user;
}
@CachePut(cacheName = "learning-cache")
public void storeUser(String id, @CacheValue User user) {
Log("Stored:" + user.getName());
}
我必须说一切都很好,直到它试图从文件库中读取。那是我得到上面提到的错误的时候。 当我用文本编辑器打开缓存文件时,我可以看到 org.infinispan.cdi.interceptor.DefaultCacheKey 引用..
任何帮助或方向都会有很高的偏见。
干杯,
EDIT1: 所以我一直在玩,试图在没有拦截器的情况下做同样的事情:
@Inject
Cache<String, User> cache;
public User findUser(String id) {
if (cache.containsKey(id)) {
return cache.get(id);
} else {
User user = new User();
user.setId(id);
user.setName("asdad");
cache.put(id, user);
return user;
}
}
现在错误:
引起:java.lang.ClassNotFoundException: org.infinispan.quickstart.cdi.config.User来自[Module 来自本地模块加载器的“org.jboss.as.clustering.infinispan:main” @ 64b2ad57(roots:D:\ jboss \ modules)]
所以这与类加载器没有找到正在编组到磁盘的类有关 - 可能是jboss问题而不是infinispan? 我一直在研究,但它不应该只与Serializable一起使用吗? 我也在考虑storeAsBinary属性,但是,作为本地缓存,我认为它不会有任何好处。
有什么想法吗?