私はKryoをシリアル化/逆シリアル化に使用していますが、事前にクラスを登録していません。つまり、逆シリアル化時に例外が発生します。Kryoの逆シリアル化中にクラス例外をロードできません。
クラスshell.api.model.BatteryStatuoをkryoのClassLoaderで読み込めません。現時点での再試行
私のクラス名は実際にはshell.api.model.BatteryStatusなので、シリアル化中に何が起こったのか分かりません。
クラス名の長さに制限はありますか?
また、ネストされた構造を持ち、循環参照を持つ可能性のあるJPAエンティティをシリアル化しているため、潜在的な問題が生じるでしょうか?私はスタックオーバーフロー例外が表示されると思います。
これは、オブジェクトをシリアル化の抜粋である:
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));
}
デシリアライズ:
try (final Input input = new Input(inputStream)) {
return ((Serializable) kryo.readObject(input, entityType));
}
entityTypeは、この場合、親クラスである: shell.api.model.Heartbeat
と、Heartbeat内部には複数のエンティティがあり、そのうちの1つはBatteryStatusです。
おかげで - 私はそれを試してみて、戻って報告します。 – Walter