createCache 在非静态方法中失败

createCache fails in non-static method

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

Exception in thread "main" javax.cache.CacheException: class org.apache.ignite.IgniteCheckedException: Failed to validate cache configuration (make sure all objects in cache configuration are serializable): LongCache

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

下发生的

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

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