Mantis Bugtracker
  

Viewing Issue Simple Details Jump to Notes ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0004165 [Hessian] major always 08-05-10 16:00 08-05-10 16:00
Reporter ebourg View Status public  
Assigned To
Priority normal Resolution open  
Status new   Product Version 4.0.7
Summary 0004165: ArrayStoreException on deserializing a class with an unknown field
Description If a Hessian 2 stream contains an object definition with more fields than the class known locally, an ArrayStoreException is triggered:

java.lang.ArrayStoreException: com.caucho.hessian.io.JavaDeserializer$NullFieldDeserializer
at com.caucho.hessian.io.Hessian2Input.readObjectDefinition(Hessian2Input.java:2306)
at com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2212)
at com.caucho.hessian.io.CollectionDeserializer.readLengthList(CollectionDeserializer.java:97)
at com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:1713)
at com.caucho.hessian.io.Hessian2Input.readReply(Hessian2Input.java:157)
at com.caucho.hessian.client.HessianProxy.invoke(HessianProxy.java:190)

This is annoying because if a class is updated on the server with an optional field, it crashes the clients that haven't been updated yet a rely on a older version of the class. It doesn't happen with a Hessian 1 stream.

This happens because NullFieldDeserializer in JavaDeserializer doesn't extend FieldDeserializer, so it's not possible to assign its instance to the array of FieldDeserializers created in the JavaDeserializer#createFields(int) method.
Additional Information
Attached Files

- Relationships

There are no notes attached to this issue.

- Issue History
Date Modified Username Field Change
08-05-10 16:00 ebourg New Issue


Mantis 1.0.0rc3[^]
Copyright © 2000 - 2005 Mantis Group
26 total queries executed.
24 unique queries executed.
Powered by Mantis Bugtracker