我在Wildfly 8.2上有一个简单的Infinispan本地缓存(也尝试过分布式缓存)。一切工作正常,直到我重新部署我的.WAR。我.WAR重新部署后,我收到以下错误:在重新部署Wildfly后从Infinispan缓存中读取ClassCastException 8.2
Caused by: java.lang.ClassCastException: my.package.MyClass cannot be cast to my.package.MyClass
完整堆栈跟踪:https://gist.github.com/bagges/07af1842a874f7c99ef3
我查找缓存的CDI豆这样的:
@Path("/mypath")
@Stateless
public class MyServiceClass {
@Resource(lookup = "java:jboss/infinispan/myContainer")
private CacheContainer container;
private Cache<Integer, MyCacheObject> myCache;
@PostConstruct
public void start() {
myCache = container.getCache("myCache");
}
@GET
public String get() {
if(!myCache.containsKey(1)) {
myCache.put(1, new MyCacheObject(1, "Hello Cache"));
}
return myCache.get(1).getName();
}
}
Wildfly-配置:
<cache-container name="myContainer" jndi-name="java:jboss/infinispan/myContainer" start="EAGER">
<local-cache name="myCache"/>
</cache-container>
我知道错误的发生是因为关闭了不同的类加载器。 Infinispan试图将存储在前一个类加载器中的实体转换为无法工作的实体。但如何避免这种情况?
您可以发布完整的堆栈跟踪在要点或pastebin?你的Wildfly配置是什么样的? –
添加了堆栈跟踪和配置。任何想法@GalderZamarreño? – markus