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
-~----------~----~----~----~------~----~------~--~---

Reply via email to