Protocol versions up to 3 of the River marshalling protocol erroneously serialize a class descriptor for the first non-serializable superclass of a serializable class.
This manifests itself particularly when an IBM JVM and a Sun JVM communicate by serializing a StringBuilder or StringBuffer class. The Sun JDK contains a shared superclass called AbstractStringBuilder which is not present in IBM's version.
In version 4 the stream should be marked with a NULL when the first non-serializable class is hit. For version 3 though we can just mark it with java.lang.Object because that is also a single byte and should work as well (in 1.4 at least, this class is only used to detect the end of the chain; it is not used to make decisions about what constructor to invoke). Only the sender needs to change; the receiver should continue functioning.
Fixed in JBoss Marshalling 1.4.3
Marking for inclusion in 6.2.1 release notes documentation.
Requesting information (possibly even a draft release note) as I am having some difficulty parsing the details of this issue and it's resolution.
Brad, any assistance you can offer would be good. I'm lost somewhere in the series of serializable and non-serializable classes.
Thanks for the awesome content David. That was exactly what I needed! I've reformatted the note for publication and marked it for inclusion in the Release Notes document.
Verified with EAP 6.2.1.CP.CR1.