1

我正在尝试将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 默认是可序列化的,因为它是一个案例类。有什么提示吗?

4

1 回答 1

2

如果您检查它的来源,BSONObjectID它实际上不是一个案例类,并且直到 10 月 2 日 sgodbillon 更改以修复错误#144时才可序列化 (来源

在发布之前,我会说你有三个选择:

  1. 使用响应式 mongo 的快照运行
  2. 使用已修补的自定义构建(您自己制作)运行
  3. 以某种方式更改您正在序列化的内容(例如使用 json 格式或类似的东西),这样您就不会真正序列化BSONObjectID
于 2014-10-05T17:22:45.637 回答