У меня есть Jet 0.6 в качестве резервной копии и некоторый процесс Node.JS с установленным hazelcast-nodejs-client 0.8.0. Я пытаюсь подтолкнуть к отображению объекта из процесса Node, который является точным отражением аналогичного объекта на стороне Jet. Однако я не понимаю, как убедиться, что на стороне Jet этот JS-объект будет соответственно сериализован / десериализован. У меня такое чувство, что мне нужно указать Jet, что этот объект JSON должен быть Data POJO, и следует использовать правильную сериализацию / десериализацию.
На стороне узла:
var data = {
id: someObject.did, // long
time: someObject.time, // long
};
dataMap.put(data.id, data).then(
function () {
console.log("Ok");
},
function (error) {
console.error(error);
}
);
Со стороны Jet: открытый класс Data реализует Serializable {
private long id;
private long time;
public Data(long id, long time) {
this.id = id;
this.time = time;
}
public long getId() {
return id;
}
public long getTime() {
return time;
}
ОБНОВЛЕНИЕ:
Мне удалось отследить стек вызовов до DefaultSerializer.ts
, который, по-видимому, отвечает за преобразование объектов JS в Data
экземпляры, которые будут отправлены через службу MapProxy
в кеш:
export class JsonSerializer implements Serializer {
getId(): number {
return -130;
}
read(input: DataInput): any {
return JSON.parse(input.readUTF());
}
write(output: DataOutput, object: any): void {
output.writeUTF(JSON.stringify(object));
}
}