我有一个存储在infinispan中的对象。它有几个字段可以很容易地复制到另一个服务器,但有几个字段只是服务器。具体来说,这些是对象上的更改侦听器。问题是当第二个复制实例出现或数据发生更改时,它会为更改侦听器的null序列化并将其清除,因为该字段是瞬态的。我所寻求的是,如果有一种方法,或许有一个注释,告诉infinispan不复制对象的一个字段:即:
class A {
String data;
int value;
@InfinispanNoSerialize
List<Object> listeners;
}
提前致谢。
答案 0 :(得分:0)
我想你想要的是将新值与现有值合并,以保留一组侦听器。
理论上,您应该能够使用@CacheEntryModified
侦听器执行此操作,该侦听器在使用isPre == true
调用时将旧的侦听器集保存在线程局部中,并将保存的侦听器写入新值时使用isPre == false
调用。
答案 1 :(得分:0)
此处的另一种可能性是为类提供您自己的Externalizer实现,然后您可以完全控制写入可序列化流的内容,以及如何处理这些内容。从中读出来。这样,您可以根据需要在接收端重建监听器列表。查看documentation on providing your own Externalizers。