public static class Oya {
String name;
public Oya(String name) {
super();
this.name = name;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "Oya [name=" + name + "]";
}
}
public static void main(String[] args) throws GridException {
try (Grid grid = GridGain.start(
System.getProperty("user.home") + "/gridgain-platform-os-6.1.9-nix/examples/config/example-cache.xml")) {
GridCache<Integer, Oya> cache = grid.cache("partitioned");
boolean success2 = cache.putxIfAbsent(3, new Oya("3"));
log.info("Current 3 value = {}", cache.get(3));
cache.transform(3, (it) -> new Oya(it.name + "-transformed"));
log.info("Transformed 3 value = {}", cache.get(3));
}
}
3-transformed
putxIfAbsent()
代码。3-transformed
但是null
取而代之的是如果我将缓存值更改为String
(如GridGain Basic Operations video)或Java内置值,而不是我自己的自定义类,则代码将起作用。
答案 0 :(得分:1)
数据网格的对等部署是一项仅限开发的功能。 SHARED模式的契约是每当具有原始类定义的最后一个节点离开时,所有类都将被取消部署。对于数据网格,它意味着将清除缓存。这对于更改类定义的情况很有用。
在CONTINUOUS模式下,缓存类永远不会被取消部署,但在这种情况下,必须注意不要在不重新启动网格节点的情况下更改类的定义。
有关详细信息,请参阅Deployment Modes文档。