2010-12-01 5 views
2

Hier ist der Fehler, den ich erhalte. Ich habe überall nach Antworten gesucht und ich kann nicht herausfinden, warum jemand anderes nicht auf dasselbe Problem stößt. Der Fehler tritt auf, wenn ich ein Vorschlagsobjekt aus Hibernate abrufe, das über eine Viele-zu-Eins-Abhängigkeit mit User_Info für zwei Eigenschaften, den Autor und den Advisor, verfügt. Bei Bedarf kann ich die Klassen und den Ruhezustand konfigurieren. Nur eine Notiz, ich isSerializeable implementieren und haben leere Konstrukteuren ... ich wirklich einen Rat zu schätzen wissen oder helfen ...GWT kann mein Objekt vom Ruhezustand nicht serialisieren

Starting Jetty on port 8888 
    [WARN] Exception while dispatching incoming RPC call 
com.google.gwt.user.client.rpc.SerializationException: java.lang.reflect.InvocationTargetException 
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeWithCustomSerializer(ServerSerializationStreamWriter.java:760) 
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:723) 
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:612) 
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:152) 
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:534) 
at com.google.gwt.user.server.rpc.RPC.encodeResponse(RPC.java:609) 
at com.google.gwt.user.server.rpc.RPC.encodeResponseForSuccess(RPC.java:467) 
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:564) 
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:188) 
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:224) 
at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) 
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362) 
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) 
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) 
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) 
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49) 
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
at org.mortbay.jetty.Server.handle(Server.java:324) 
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) 
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843) 
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647) 
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) 
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) 
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396) 
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488) 
Caused by: java.lang.reflect.InvocationTargetException 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:616) 
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeWithCustomSerializer(ServerSerializationStreamWriter.java:742) 
... 30 more 
**Caused by: com.google.gwt.user.client.rpc.SerializationException: Type 'edu.scranton.segpis.client.shared.User_Info_$$_javassist_2' 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 = [email protected]** 
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:610) 
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:152) 
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:534) 
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeClass(ServerSerializationStreamWriter.java:700) 
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:730) 
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:612) 
at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:129) 
at com.google.gwt.user.client.rpc.core.java.util.Collection_CustomFieldSerializerBase.serialize(Collection_CustomFieldSerializerBase.java:43) 
at com.google.gwt.user.client.rpc.core.java.util.ArrayList_CustomFieldSerializer.serialize(ArrayList_CustomFieldSerializer.java:36) 
... 35 more 
[ERROR] 500 - POST /uofsisweb/thesisproposal (127.0.0.1) 57 bytes 
    Request headers 
     Host: 127.0.0.1:8888 
     User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.12) Gecko/20101027 Ubuntu/10.10 (maverick) Firefox/3.6.12 
     Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
     Accept-Language: en-us,en;q=0.5 
     Accept-Encoding: gzip,deflate 
     Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
     Keep-Alive: 115 
     Connection: keep-alive 
     Cache-Control: no-cache 
     Referer: 

     X-GWT-Permutation: HostedMode 
    X-GWT-Module-Base: 

     Content-Type: text/x-gwt-rpc; charset=utf-8 
     Content-Length: 185 
     Pragma: no-cache 
    Response headers 
     Content-Type: text/plain 

Antwort

0

Hibernate verwendet CGLIB die Objekte zu ändern, es Laufzeit lädt, ist dies ein träges Laden von ermöglichen Objektbeziehungen. Hibernate verwendet auch interne Lazy-Loading-Sammlungen (Liste, Karte), abhängig von der Zuordnung.

Beide diese Dinge werden GWT Drosselung machen. Eine Möglichkeit, um sicherzustellen, dass Sie "saubere" Objekte für GWT erhalten, besteht darin, sie zu klonen, indem Sie eine brandneue Instanz Ihres Objekts erstellen und alle Werte aus dem überwachten Bereich in Ihren sauberen Bereich setzen.

Eine weitere Möglichkeit besteht darin, eine reflektionsbasierte Objektdurchquerung zu erstellen, die sicherstellt, dass keine merkwürdigen Typen herumlungern.

In Ihrem Fall scheint es, auf etwas zu ersticken in User_Info:

edu.scranton.segpis.client.shared.User_Info_$$_javassist_2' 

Vielleicht können Sie den problematischen Bereich isolieren (Markierung ein Feld nach der anderen als transient, nur um zu sehen, welches es ist) - und dann repariere das.

+0

Danke Martin das hat sehr geholfen. –

Verwandte Themen