我正在使用GWT 2.4。我有序列化問題。我的服務有一個方法...GWT:由序列化錯誤屏蔽
@RemoteServiceRelativePath("retrieveChild")
public interface ChildRetrievalService extends RemoteService {
...
Collection<Node> getRootNodes();
它用我的「節點」類的定義如下......
public class Node implements Serializable {
private Long id;
private Node parent;
private String info;
private List<Node> children;
public Node() {
this.children = new ArrayList<Node>();
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
} // setId
public Node getParent() {
return parent;
}
public void setParent(Node parent) {
this.parent = parent;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
} // setInfo
public List<Node> getChildren() {
return children;
}
public boolean equals(Object node) {
return node != null &&
node instanceof Node &&
((Node) node).getId() == id;
}
public int hashCode() {
return getId().hashCode();
}
}
但我發現了試圖調用該服務方法時出現錯誤,抱怨序列化。 HashMap和Node都是可序列化的,所以一切都崩潰了?
[WARN] Exception while dispatching incoming RPC call
com.google.gwt.user.client.rpc.SerializationException:類型「的java.util.HashMap $值」是不包括在該組的類型可以由本SerializationPolicy或其類對象被序列無法加載。出於安全目的,這種類型不會被序列化。:instance = [[email protected],[email protected],[email protected] ,[email protected],[email protected]] at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:619 ) at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:126) at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter $ ValueWriter $ 8.write( ServerSerializationStreamWriter.java:153) at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:539) at com.google.gwt.user.server.rpc.RPC.encodeResponse( RPC。 java:616) at com.google.gwt.user.server.rpc.RPC.encodeResponseForSuccess(RPC.java:474) at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java: 571) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248) 在com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62) 在javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 在javax.servlet.http包。 HttpServlet.service(HttpServlet.java:717) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) at org.mortbay.jetty.servlet.Servl (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:50 5) at org.mortbay.jetty.HttpConnection $ RequestHandler.content(HttpConnection.java:843) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647) at org.mortbay.jetty.HttpParser。 (org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) at org。 mortbay.thread.QueuedThreadPool $ PoolThread.run(QueuedThreadPool。的java:488)
謝謝, - 戴夫
我想嘗試把它在遠程服務接口中的具體類型的集合。有時GWT可能會對其白名單或不白名錶感到厭煩。 –