`
老汉学编程
  • 浏览: 30764 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Tomcat集群遇到反序列化出错的问题

阅读更多

错误信息:严重: Manager [/kssc]: Unable to receive message through TCP channel
java.io.InvalidClassException: com.kingstar.project.AbstractUser; local class in
compatible: stream classdesc serialVersionUID = 8406738952245021539, local class
 serialVersionUID = 7630078056280811162
        at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:560)
        at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:158
2)
        at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495)
        at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:158
2)
        at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1
731)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
        at org.apache.catalina.cluster.session.DeltaRequest$AttributeInfo.readEx
ternal(DeltaRequest.java:334)
        at org.apache.catalina.cluster.session.DeltaRequest.readExternal(DeltaRe
quest.java:246)
        at org.apache.catalina.cluster.session.DeltaManager.loadDeltaRequest(Del
taManager.java:697)
        at org.apache.catalina.cluster.session.DeltaManager.handleSESSION_DELTA(
DeltaManager.java:1572)
        at org.apache.catalina.cluster.session.DeltaManager.messageReceived(Delt
aManager.java:1522)
        at org.apache.catalina.cluster.session.DeltaManager.messageDataReceived(
DeltaManager.java:1271)
        at org.apache.catalina.cluster.session.ClusterSessionListener.messageRec
eived(ClusterSessionListener.java:85)
        at org.apache.catalina.cluster.tcp.SimpleTcpCluster.receive(SimpleTcpClu
ster.java:1167)
        at org.apache.catalina.cluster.tcp.ClusterReceiverBase.messageDataReceiv
ed(ClusterReceiverBase.java:426)
        at org.apache.catalina.cluster.io.ObjectReader.execute(ObjectReader.java
:107)
        at org.apache.catalina.cluster.tcp.TcpReplicationThread.drainChannel(Tcp
ReplicationThread.java:138)
        at org.apache.catalina.cluster.tcp.TcpReplicationThread.run(TcpReplicati
onThread.java:69)

 

 

问题原因调查及确认:

AbstractUser实现了Serializable接口。

两个tomcat中AbstractUser编译后的class版本号不一致导致session同步时反序列化session中AbstractUser对象失败所致。

0
2
分享到:
评论
2 楼 老汉学编程 2012-11-06  
Shen.Yiyang 写道
集群里面你还放class版本不一样的东西。。集群的意思不就是相同的镜像吗

之前没做过,不太清晰,现在清晰了。只要保证在session中对象(需要反序列化的对象)的class版本一致就OK了。
1 楼 Shen.Yiyang 2012-11-05  
集群里面你还放class版本不一样的东西。。集群的意思不就是相同的镜像吗
发表评论

文章已被作者锁定,不允许评论。

相关推荐

Global site tag (gtag.js) - Google Analytics