如何告诉infinispan在复制时单独留下瞬态区域?

时间:2014-02-24 18:47:15

标签: infinispan

我有一个存储在infinispan中的对象。它有几个字段可以很容易地复制到另一个服务器,但有几个字段只是服务器。具体来说,这些是对象上的更改侦听器。问题是当第二个复制实例出现或数据发生更改时,它会为更改侦听器的null序列化并将其清除,因为该字段是瞬态的。我所寻求的是,如果有一种方法,或许有一个注释,告诉infinispan不复制对象的一个​​字段:即:

class A {
  String data;
  int value;
  @InfinispanNoSerialize
  List<Object> listeners;
}

提前致谢。

2 个答案:

答案 0 :(得分:0)

我想你想要的是将新值与现有值合并,以保留一组侦听器。

理论上,您应该能够使用@CacheEntryModified侦听器执行此操作,该侦听器在使用isPre == true调用时将旧的侦听器集保存在线程局部中,并将保存的侦听器写入新值时使用isPre == false调用。

答案 1 :(得分:0)

此处的另一种可能性是为类提供您自己的Externalizer实现,然后您可以完全控制写入可序列化流的内容,以及如何处理这些内容。从中读出来。这样,您可以根据需要在接收端重建监听器列表。查看documentation on providing your own Externalizers