Нужна универсальная / динамическая сериализация / маршалинг, похожая на Terracotta

#java #serialization #jvm #marshalling #terracotta

#java #сериализация #jvm #маршалинг #terracotta

Вопрос:

Проблема: Программное обеспечение, которое я использую, Lift, имеет «пользовательские сеансы», куда можно помещать любые объекты, которые сохраняются между пользовательскими запросами (с таймаутом GC). Хотя она проста в использовании и мощна, у нее есть один существенный недостаток: объекты не сериализуемы, поэтому вы не можете распространять их на другие экземпляры сервера для достижения высокой доступности.

Существует ли API / инструмент, который может взять случайный объект, проанализировать его структуру с помощью отражения, создать маршаллер / демаршаллер, который может извлекать все данные объекта и возвращать их в формате, который затем может быть использован для распространения объекта на другую JVM. Сам маршаллер / демаршаллер должен быть сериализуемым. Должен быть способ явно определить, что некоторые данные следует игнорировать, например, используя transient, и также должна быть возможность распознать, что некоторые объекты, на которые ссылаются, на самом деле являются системными объектами (синглетонами), которые должны обрабатываться особым образом. В идеале это должен быть итеративный процесс, чтобы вы могли ограничить, насколько «большим» может быть объект для маршалинга.

Это несколько похоже на то, что делает Terracotta, за исключением того, что я хочу реализовать свой собственный транспорт и серверную часть, и я не хочу использовать их «усилитель», потому что было бы очень сложно ограничить пакеты классов для изменения, и поэтому пришлось бы модифицировать все мои классы во время выполнения на всякий случай, что было бы очень дорого.

Редактировать: Строго говоря, наличие собственного транспорта и серверной части не является абсолютной необходимостью, но сервер Terracotta — это единственная точка отказа, и я хочу систему, которая полностью распределена, где я могу принудительно установить минимальный уровень репликации и где я могу переслать запрос на сервер, владеющий копией пользовательского сеанса.

Ответ №1:

Хотя это не совсем то, что я хотел, я узнал, что существует по крайней мере одна альтернатива Terracotta, которая называется XSTM, похоже, у них похожая концепция, хотя они и более «расширяемые».