The class WeeklyAppointmentData does not appear to implement IsSerializable. That's in the first line of the error stack trace.
G --- On Wed, 3/18/09, Alejandro D. Garin <[email protected]> wrote: > From: Alejandro D. Garin <[email protected]> > Subject: SerializationException when serialize a HashMap over RPC > To: [email protected] > Date: Wednesday, March 18, 2009, 5:13 PM > Hello, > > I can't serialize a HashMap and I don't understand > why. Could you help me > please? > If I remove the following hashMap the RPC work just fine: > > private > Map<DayHourCoordenate,List<Appointment>> mapData > = new > HashMap<DayHourCoordenate,List<Appointment>>(); > > *Tomcat error log:* > > com.google.gwt.user.client.rpc.SerializationException: Type > 'com.tasktimer.web.gwt.domain.WeeklyAppointmentData' > was not assignable to > 'com.google.gwt.user.client.rpc.IsSerializable' and > did not have a custom > field serializer. For security purposes, this type will > not be serialized. > at > com.google.gwt.user.server.rpc.impl.LegacySerializationPolicy.validateSerialize(LegacySerializationPolicy.java:140) > at > com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:591) > at > com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:129) > at > com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:146) > at > com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:530) > at > com.google.gwt.user.server.rpc.RPC.encodeResponse(RPC.java:573) > at > com.google.gwt.user.server.rpc.RPC.encodeResponseForSuccess(RPC.java:441) > at > com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:529) > at > com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:164) > at > com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost(RemoteServiceServlet.java:86) > at > javax.servlet.http.HttpServlet.service(HttpServlet.java:710) > at > javax.servlet.http.HttpServlet.service(HttpServlet.java:803) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263) > at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) > at > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584) > at > org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) > at java.lang.Thread.run(Unknown Source) > > *The demo clases:* > > public class SimpleFacadeImpl extends RemoteServiceServlet > implements > SimpleFacade { > > private static final long serialVersionUID = > 1164908101444531503L; > > public SimpleFacadeImpl() { > > } > @Override > public WeeklyAppointmentData getWeeklyData() { > WeeklyAppointmentData data = new > WeeklyAppointmentData(); > DayHourCoordenate coordenate = new > DayHourCoordenate(11,10); > data.add(coordenate, new Appointment()); > return data; > } > } > > @RemoteServiceRelativePath("/simpleFacade.do") > public interface SimpleFacade extends RemoteService { > > public WeeklyAppointmentData getWeeklyData(); > } > > public class WeeklyAppointmentData implements Serializable > { > > private static final long serialVersionUID = > 4291039636290439374L; > private > Map<DayHourCoordenate,List<Appointment>> mapData > = new > HashMap<DayHourCoordenate,List<Appointment>>(); > > public WeeklyAppointmentData() { > > } > public void add(DayHourCoordenate coordenate, Appointment > appointment) { > > List<Appointment> list = mapData.get(coordenate); > if( list == null) { > list = new ArrayList<Appointment>(); > mapData.put(coordenate, list); > } > list.add(appointment); > } > public List<Appointment> get(DayHourCoordenate > coordenate) { > return mapData.get(coordenate); > } > } > > public class DayHourCoordenate implements Serializable { > > private static final long serialVersionUID = > 217370389812685596L; > private int day = 0; > private int hour = 0; > > public DayHourCoordenate() { > > } > public DayHourCoordenate(int day, int hour) { > this.day = day; > this.hour = hour; > } > public int getDay() { > return day; > } > public void setDay(int day) { > this.day = day; > } > public int getHour() { > return hour; > } > public void setHour(int hour) { > this.hour = hour; > } > @Override > public int hashCode() { > final int prime = 31; > int result = 1; > result = prime * result + day; > result = prime * result + hour; > return result; > } > @Override > public boolean equals(Object obj) { > if (this == obj) > return true; > if (obj == null) > return false; > if (!(obj instanceof DayHourCoordenate)) > return false; > DayHourCoordenate other = (DayHourCoordenate) obj; > if (day != other.day) > return false; > if (hour != other.hour) > return false; > return true; > } > } > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/Google-Web-Toolkit?hl=en -~----------~----~----~----~------~----~------~--~---
