/ / Problema strano JMS: java, jms, messaggistica, deserializzazione

Strano problema JMS: java, jms, messaggistica, deserializzazione

Ho un problema in un sistema in cui ~ 500 server comunicano con il server centrale tramite JMS su ~ 1000 argomenti. È un sistema di 10 anni e ha funzionato bene fino a pochi mesi fa.

Negli ultimi 3 mesi ho avuto questi tipi di errori:

  • il server centrale non può deserializzare l'intero perché l'intero nel messaggio ha un SerialVersionID errato

    Deserialize message failed. - causa: java.io.InvalidClassException: java.lang.Integer; classe locale incompatibile: stream classdesc serialVersionUID = 1360651450463909473, serial class serialUersionUID = 1360826667806852920

  • il server centrale non può deserializzare la classe sconosciuta

    Deserialize message failed. - causa: java.lang.ClassNotFoundException: non è stato trovato nessun ClassLoaders per: javnteger.Integer

  • JMS tenta di creare un'istanza della classe Number che è astratta

    Catturato errore JVM: java.lang.InstantiationError: java.lang.Number

Per tutti gli errori il problema è localizzato in un argomento casuale. Se i messaggi di quell'argomento vengono cancellati e inviati di nuovo dai server, tutto è andato bene.

Sospetto hardware JMS, l'HDD è ok, abbiamo bisogno di testare la memoria e non so dove guardare dopo.

Qualcuno ha qualche suggerimento?

risposte:

3 per risposta № 1

Non è un problema JVM. Indietro almeno fino a JDK 1.2 (in realtà torna a 1.0.2 se ritieni il commento nell'origine java.lang.Integer distribuito con JDK), serialVersionUID di Integer è stato "1360826667806852920L", che corrisponde alla tua "classe locale" "versione." Non l'hanno mai cambiato per preservare la compatibilità con le versioni precedenti. Questo fatto combinato con "ClassNotFoundException: javnteger.Integer" (dovrebbe essere java.lang.Integer) punta inequivocabilmente alla corruzione dei dati. O un mittente, un destinatario o la rete stessa sta corrompendo i messaggi. Una cattiva RAM sembrerebbe un probabile colpevole, specialmente se è solo intermittente e raramente, se fosse la rete, probabilmente accadrà più spesso e sarà meno prevedibile.