Hazelcast сериализация коллекций с портативным - PullRequest
0 голосов
/ 20 апреля 2019

Сериализация членов коллекций завершается неудачно, когда: - члены основаны на общем интерфейсе, но реализация может отличаться и - порядок членов во время сериализации не предопределен.

Проблема может быть сужена до того факта, что если коллекция (например, List) содержит сначала Type-A, а затем Type-B (оба реализуют общий интерфейс Int-1), то операция map.put ("list") , список) работает отлично. При сериализации второго экземпляра, который содержит List с Type-B и Type-A, сериализация завершается неудачно с этим исключением: Вызывается: com.hazelcast.nio.serialization.HazelcastSerializationException: Неверный переносимый тип! Общие переносимые типы не поддерживаются! Ожидаемый идентификатор класса: 1, фактический идентификатор класса: 2

Порядок типов Type-A и Type-B, по-видимому, фиксируется после первой erialization (операция map.put)

Демо-код содержит версию с Generics и без нее. Оба варианта выдают одинаковую ошибку.

Пример проекта доступен на GitHub: https://github.com/trackitecture/hz-portable-ser-test

Я ищу решение, которое: а) может сериализовать членов коллекции в случайном порядке б) может быть проиндексирован (как с Portable) c) может быть запрошен (как с Portable) d) не требуется десериализация при запросе (как в случае с Portable)

Я знаю, что я, вероятно, не могу иметь все это. Мне определенно нужен).

Если бы в Portable можно было создать запись 'collection', которая позволила бы неупорядоченную вставку Portables, аналогично скобкам в JSON / BSON, это помогло бы.

Спасибо

...