Ich benutze Kryo für Serialisierung/Deserialisierung und nicht im Voraus Klassen registrieren (ich arbeite daran). Bei der Deserialisierung erhalte ich die Ausnahme:Kann Klassenausnahme während Kryo Deserialisierung nicht laden
Kann die Klasse shell.api.model.BatteryStatuo nicht mit kryos ClassLoader laden. Erneut versuchen mit Strom ..
Jetzt ist mein Klassenname tatsächlich shell.api.model.BatteryStatus, also bin ich nicht sicher, was während der Serialisierung passiert ist.
Gibt es eine Beschränkung für die Länge des Klassennamens?
Auch, wie ich JPA-Entitäten serialisieren, die verschachtelte Strukturen haben und wahrscheinlich Zirkelbezüge haben, wird das ein potenzielles Problem darstellen? Ich würde denken, ich würde eine Stapelüberlauf Ausnahme sehen, wenn ja.
Dies ist ein Ausschnitt aus der Serialisierung eines Objekts:
protected final Kryo kryo = new Kryo();
try (final ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
try (final Output output = new Output(baos)) {
kryo.writeObject(output, data);
}
return (baos.toByteArray());
} catch (IOException e) {
LOGGER.error("error serializing", e);
throw (new RuntimeException("Error serializing", e));
}
Deserialisierung:
try (final Input input = new Input(inputStream)) {
return ((Serializable) kryo.readObject(input, entityType));
}
entityType ist die Elternklasse, in diesem Fall: shell.api.model.Heartbeat
und innerhalb von Heartbeat sind mehrere Entitäten, von denen einer BatteryStatus ist.
Dank - ich werde versuchen, dass und berichten. – Walter