RuntimeSchema в Protostuff циклические ссылки?

Мы используем Protostuff RuntimeSchema для сериализации наших данных. Это в основном работает, но мы иногда получаем:

java.lang.StackruError
at io.protostuff.runtime.ObjectSchema.mergeFrom(ObjectSchema.java:350) ~[protostuff-runtime-1.5.3.jar:1.5.3]
at io.protostuff.CodedInput.mergeObjectEncodedAsGroup(CodedInput.java:336) ~[protostuff-core-1.5.3.jar:1.5.3]
at io.protostuff.CodedInput.mergeObject(CodedInput.java:298) ~[protostuff-core-1.5.3.jar:1.5.3]
at io.protostuff.runtime.RuntimeUnsafeFieldFactory$15$1.mergeFrom(RuntimeUnsafeFieldFactory.java:1217) ~[protostuff-runtime-1.5.3.jar:1.5.3]

Это, очевидно, означает, что у нас есть какая-то циклическая ссылка внутри наших объектов.
Чтение документации Protostuff теоретически поддерживает циклические ссылки в схемах времени выполнения. Нужна ли конфигурация, чтобы это работало?

Я читал о: Dprotostuff.runtime.collection_schema_on_repeated_fields но предполагается, что он применяется только к циклической ссылке на элементы массива, что не относится к нашим объектам.

Спасибо!

1 ответ

Protostuff поддерживает несколько форматов кодирования (protobuf, json и свой graph).

Если ваши объекты содержат циклические ссылки, то подходит только одна - graph, Вы можете использовать его с io.protostuff.GraphIOUtil,

Обратите внимание, что другие кодировки (json, protobuf) не может поддерживать циклические ссылки (для этого требуется дополнительная информация, включаемая в сериализованную форму, что на самом деле невозможно).

Дополнительную информацию по этой теме можно найти здесь: http://www.protostuff.io/documentation/object-graphs/

Другие вопросы по тегам