我有一个部署到 Tomcat 7 的应用程序,目前集群在两个节点之间。当容器尝试反序列化已更改的类时,我遇到了一个小问题。读写方法应该优雅地处理这个问题,所以我认为这不是问题。尽我所能告诉设置serialVersionUID
应该可以解决问题,但是在我的代码中,我将其指定为-1
并且在该值下方的错误中似乎被忽略了。
例外:
java.io.InvalidClassException:common.user.User;本地类不兼容:st ream classdesc serialVersionUID = 1828770465826288626,本地类serialVersion UID = 6192552274218063887
类定义的相关部分:
case class User(
var id: Long = 0l) extends SerialVersionUID(-1l) with KeyedEntity[Long] with Externalizable {
def readExternal(in: ObjectInput) {
id = in.readLong()
}
def writeExternal(out: ObjectOutput) {
out.writeLong(id)
}
}
我还尝试使用以下内容而不是扩展抽象类(根据:http ://www.scala-lang.org/node/259 )
private val serialVersionUID = -1l
我得到相同的结果。在如何使用 Scala 正确地外部化一个类时,我有什么遗漏吗?