Проблема/Контекст. Мне нужно отправить некоторые сообщения удаленному игроку. Эти сообщения могут содержать объекты класса, которые неизвестны на стороне получателя. И мне нужно перехватить такую ситуацию, чтобы избежать исключения ClassNotFoundException.Akka Удаленный доступ и перехват неизвестных классов посредством пользовательской десериализации
Одно решение может состоять в перехвате неизвестных классов во время десериализации сообщений. Затем сообщение может быть заменено другим сообщением уровня приложения, чтобы удаленный актер мог сообщить отправителю, что у него нет необходимых классов.
Я не знаю, если такой перехват возможен, потому что обычай де/serializators должен реализовать akka.serialization.Serializer, которая имеет следующий метод
def fromBinary(bytes: Array[Byte],
clazz: Option[Class[_]]): AnyRef
Теперь проблема проистекает из строительства Объекты класса (который делается от Akka) для объектов неизвестного класса.
Есть ли способ настроить десериализацию Akka на нижнем уровне, чтобы удовлетворить мои потребности?
Другие решения.
- Проблема аналогична той, изображенной на следующей SO вопрос, где была предложена другое решение: Deserialize remote object to the narrowest accessible class все еще было бы полезно иметь там ответ. Однако этого решения было бы недостаточно для меня, потому что, хотя было бы нормально ограничивать интерфейс, мне все равно понадобилась бы реализация класса с дополнительными методами.
Возможно, вы захотите проверить 'kryo'. – Helios
@ Ник, не могли бы вы объяснить, почему? Насколько я понимаю, Kryo - это просто структура сериализации. Имеет ли он некоторые особенности, которые мне помогают? – metaphori