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();
}
}
하지만 서비스 메소드 (method)를 불러들이려고 오류를 받고 있어요 , 직렬화에 대해 불평. HashMap과 Node 모두 직렬화 가능하므로 모든 것이 무너집니다.
[WARN] Exception while dispatching incoming RPC call
com.google.gwt.user.client.rpc.SerializationException : 유형 'java.util.HashMap에 $의 값은'이 SerializationPolicy 또는 Class 객체 직렬화 할 수있는 유형의 집합에 포함되지 않았다 로드 할 수 없습니다. 보안을 위해이 유형은 serialize되지 않습니다. 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) com.google.gwt.user.server.rpc.RPC.encodeResponseForSuccess (RPC.java:474)에서 (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 orgHandler.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:50) 5) org.mortbay.jetty.HttpConnection $ RequestHandler.content (HttpConnection.java:843) org.mortbay.jetty.HttpParser에서 org.mortbay.jetty.HttpParser.parseNext (HttpParser.java:647) 에서 에서 . parseAvailable (HttpParser.java:205) at org.mortbay.jetty.HttpConnection.handle (HttpConnection.java:380) at org.mortbay.io.nio.SelectChannelEndPoint.run (SelectChannelEndPoint.java:395) at org. mortbay.thread.QueuedThreadPool $ PoolThread.run (QueuedThreadPool.자바 : 488)
감사합니다, - 데이브
은
구체적인 유형의 Collection을 RemoteService 인터페이스에 넣으려고합니다. 때로는 GWT가 허용 목록에 포함되지 않는 것에 대해 엉뚱한 것을 얻을 수 있습니다. –