Почему Play with ReactiveMongo сообщает об ошибках записи на диск из-за java.io.NotSerializableException: reactivemongo.bson.BSONObjectID

Я пытаюсь использовать SecureSocial в сочетании с reactivemongo. Однако у меня возникают проблемы, когда дело доходит до кэширования пользователей. Во время разработки пользователь выходит из системы каждый раз, когда Play решает перекомпилировать файлы. Я думаю, что это связано со следующей ошибкой:

[error] n.s.e.s.d.DiskStorageFactory - Disk Write of f097d7b2db41b48eb28d73fffe4a0b7af0d5723fd5ea27c3f14c21d559c4f5b7448730955aaa95700df906ac38a4b6833de0dae859d957a368d3e5028208c5ba522ffd779ac8d9e439f2c7ec516dd4ddb0005fda0a4f5cd035c3eedec717807518b4dec5f1e6781ee55125a6ae33db50cba107bb73311078d50ee947bcd92033 failed:
java.io.NotSerializableException: reactivemongo.bson.BSONObjectID
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1180) ~[na:1.7.0_21]
        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528) ~[na:1.7.0_21]
        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493) ~[na:1.7.0_21]
        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416) ~[na:1.7.0_21]
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) ~[na:1.7.0_21]

Я не знаю, как решить проблему. Я ожидал, что BSONObjectId будет сериализуемым по умолчанию, поскольку это класс case. Любые подсказки?


person Fynn    schedule 03.10.2014    source источник


Ответы (1)


Если вы проверите источники BSONObjectID, окажется, что на самом деле это не класс case, и его нельзя было сериализовать до 2 октября, когда sgodbillon изменился, чтобы исправить ошибку #144 (источник)

Пока это не будет выпущено, я бы сказал, что у вас есть три варианта:

  1. запустить со снимком реактивного монго
  2. запускать с исправленной пользовательской сборкой (которую вы делаете сами)
  3. как-то измените то, что вы сериализуете (например, используя формат json или что-то в этом роде), чтобы вы на самом деле не сериализовали экземпляры BSONObjectID
person johanandren    schedule 05.10.2014