My GWT service returns LinkedList<VisualData>
. This is how VisualData
looks:
import javax.xml.bind.annotation.XmlRootElement;
import com.google.gwt.user.client.rpc.IsSerializable;
@XmlRootElement
public class VisualData implements IsSerializable {
private Number value;
private long timestamp;
public VisualData() {
}
public VisualData(Number value, long timestamp) {
this.value = value;
this.timestamp = timestamp;
}
public long getTimestamp() {
return timestamp;
}
public Number getValue() {
return value;
}
public void setTimestamp(long timestamp) {
this.timestamp = timestamp;
}
public void setValue(Number value) {
this.value = value;
}
}
I get the following excepion connected with field private Number value
.
SEVERE: The exception contained within MappableContainerException could not be mapped to a response, re-throwing to the HTTP container
org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.lang.Number out of START_OBJECT token
at [Source: org.apache.catalina.connector.CoyoteInputStream@a0eb51; line: 1, column: 29] (through reference chain: org.jage.charts.client.VisualData["value"])
When I change private Number value
to private Object value
, all getters and setters I get:
SEVERE: WebModule[/AgECharts]Exception while dispatching incoming RPC call
com.google.gwt.user.client.rpc.SerializationException: Type 'org.jage.charts.client.VisualData' was not included in the set of types which can be serialized by this SerializationPolicy or its Class object could not be loaded. For security purposes, this type will not be serialized.: instance = Value:{@type=xs:int, $=6}, timestamp:1360240281439
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:619)
This second case is quite clear, the Object
class is not serializable. But why do I get Can not deserialize instance of java.lang.Number out of START_OBJECT token
?
You won't be able to deserialize data into this object without supplying additional type information for your value
field. This is because the Number
class is abstract and cannot be instantiated. Changing the field to Object
will not help, since there are no writable fields on that class that Jackson can deserialize data into.
You should change the field to be one of the concrete implementations of the Number
class (Integer
, Long
, Double
etc).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With