2017-01-09 21 views
1

信息:使用5.7款Hybris序列化的元素插入定制款Hybris CacheRegion

我正在努力才能使用Redis的用于此目的(而不是提供了这样的内存解决方案,地图或的EHCache)编写自定义CacheRegion 。

继提供here的说明似乎并没有被足够多。

我卡住的一点是序列化元素对象的时刻,它没有实现可序列化,所以我不能将它序列化成json或字节数组或其他任何东西(用Jackson,Kryo,FST和java默认序列化程序)。

下面代码如下(跳过其他部分):

... 
    @Override 
    public Object getWithLoader(CacheKey cacheKey, CacheValueLoader cacheValueLoader) throws CacheValueLoadException { 
    return Optional.ofNullable(get(cacheKey)) 
     .orElseGet(() -> { 
      Object element = cacheValueLoader.load(cacheKey); 

      //Can't get to serialize *element* to store it 
      return element; 
     }); 
    } 
... 

调试,我发现,目标元素是actualy的GenericBMPBean $实例GenericItemEntityStateCacheUnit,它似乎包含了很多东西(除了我奇怪地找不到的实际数据)。

,我还不明白另一件事是CacheKey.CacheUnitValueType至极的使用似乎是由执行的EHCache被忽略。即使当它是NON_SERIALIZABLE它被存储到EhCache中。

所以我的问题是:我应如何管理序列化此类型的数据?

Plus问题:标志的期望用法是什么CacheUnitValueType

这背后的主要目标是从应用程序JVM分离缓存,提高HA和可扩展性。

谢谢。

回答

0

我卡住的一点是序列化元素对象的时刻,它没有实现可序列化,所以我无法序列化它。

在hybris中没有实现Serializable的对象不应该被序列化。你必须关心缓存的内容。

它在documentation

这是不可能的,因为上没有序列化对象性质的实体和类型系统的区域表示。