开发者

JMS strange problem

I have a problem in a system where ~500 servers are communicating with central server through JMS over ~1000 topics. It's a 10 year old system and it worked good until few months ago.

In the last 3 months I had these types of errors:

  • central server can't deserialize Integer because Integer in the message has wrong SerialVersionID

    Deserialize messag开发者_C百科e failed. - cause: java.io.InvalidClassException: java.lang.Integer; local class incompatible: stream classdesc serialVersionUID = 1360651450463909473, local class serialVersionUID = 1360826667806852920

  • central server can't deserialize unknown class

    Deserialize message failed. - cause: java.lang.ClassNotFoundException: No ClassLoaders found for: javnteger.Integer

  • JMS tries to instantiate Number class which is abstract

    Caught JVM Error: java.lang.InstantiationError: java.lang.Number

For all errors problem is localized in one random topic. If messages from that topic are deleted and sent again from servers everything went ok.

I'm suspecting JMS hardware. HDD is ok. We need to test memory and I don't know where to look next.

Anyone has any suggestion?


It's not a JVM issue. Back at least as far as JDK 1.2 (actually back to 1.0.2 if you believe the comment in the java.lang.Integer source distributed with the JDK), Integer's serialVersionUID has been "1360826667806852920L", which matches your "local class" version. They've never changed it in order to preserve backward compatibility. That fact combined with the "ClassNotFoundException: javnteger.Integer" (should be java.lang.Integer) points unmistakably to data corruption. Either a sender, a receiver, or the network itself is corrupting messages. Bad RAM would seem a likely culprit, especially if it's only intermittent and seldom. If it were the network, it would probably happen more often and be less predictable.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜