createCache在非静态方法中失败

时间:2015-08-28 07:52:42

标签: ignite

我正在使用CacheStoreFactory实现和CacheStoreSessionListener创建缓存。如果我使用这些字段设置CacheConfiguration然后调用createCache但是在INSTANCE方法中我得到了这个异常:

  

线程中的异常" main" javax.cache.CacheException:class   org.apache.ignite.IgniteCheckedException:无法验证缓存   配置(确保缓存配置中的所有对象都是   serializable):LongCache

在静态方法中,不会发生这种情况。通过修改示例中的CacheJdbcStoreExample.java可以轻松地重现这一点。这种情况发生在Ignite 1.30

之下

1 个答案:

答案 0 :(得分:1)

您很可能将工厂或监听器声明为匿名类。匿名类始终包含对父类的引用(在您的情况下为LongCache)。因此,如果工厂在LongCache实例的上下文中序列化,则此实例也是序列化的。在静态方法的情况下,这个实例不存在,因此一切正常。

我建议将匿名类转换为私有静态类。这将使您更好地控制序列化的内容。