Hi, I try your suggestion but the same problem. This seems to happend only in hosted mode. I'm using windows GWT 1.5.3 .
On Wed, Mar 18, 2009 at 7:15 PM, Vitali Lovich <[email protected]> wrote: > I think I see it. List is not generally serializable. The recommendation > I recall reading somewhere is to try to use super-classes as infrequently as > possible because it makes the compiler's job more difficult - also, in this > particular case, the GWT compiler is unable to determine the type to > serialize to. > > Try: > > private Map<DayHourCoordenate,ArrayList<Appointment>> mapData = new > HashMap<DayHourCoordenate,ArrayList<Appointment>>(); > > or even more preferable, change mapData to a HashMap as well. > > > On Wed, Mar 18, 2009 at 6:05 PM, Vitali Lovich <[email protected]> wrote: > >> That depends on the version of GWT he's using. As of 1.5 (or 1.4 - can't >> recall the exact version), Serializable is a synonym for IsSerializable >> >> >> On Wed, Mar 18, 2009 at 5:15 PM, George Holler <[email protected]>wrote: >> >>> >>> >>> 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 -~----------~----~----~----~------~----~------~--~---
