Сериализация членов коллекций завершается неудачно, когда:
- члены основаны на общем интерфейсе, но реализация может отличаться и
- порядок членов во время сериализации не предопределен.
Проблема может быть сужена до того факта, что если коллекция (например, 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, это помогло бы.
Спасибо