Java GWT:为com.extjs.gxt.ui.client.data.BaseListLoadResult分派传入RPC调用时发生异常

Java GWT:为com.extjs.gxt.ui.client.data.BaseListLoadResult分派传入RPC调用时发生异常,java,glassfish-3,gwt-rpc,application-server,gxt,Java,Glassfish 3,Gwt Rpc,Application Server,Gxt,RPC调用中出现序列化异常。 GWT版本为:2.4.0。 Extjs.gxt lib版本为:gxt-2.3.1-gwt22。 如果我在tomcat 7中部署我的应用程序,它会工作,但在glassfish中-否。 请帮帮我。 服务器是Glassfish v3 Exception while dispatching incoming RPC call com.google.gwt.user.client.rpc.SerializationException: Type 'com.extjs.gxt.


RPC调用中出现序列化异常。
GWT版本为:2.4.0。
Extjs.gxt lib版本为:gxt-2.3.1-gwt22。
如果我在tomcat 7中部署我的应用程序,它会工作,但在glassfish中-否。
请帮帮我。 服务器是Glassfish v3

Exception while dispatching incoming RPC call
com.google.gwt.user.client.rpc.SerializationException: Type 'com.extjs.gxt.ui.client.data.BaseListLoadResult' 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 = com.extjs.gxt.ui.client.data.BaseListLoadResult@5dc57a
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:667)
    at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:130)
    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:587)
    at com.google.gwt.user.server.rpc.RPC.encodeResponse(RPC.java:605)
    at com.google.gwt.user.server.rpc.RPC.encodeResponseForSuccess(RPC.java:471)
    at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:563)
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:211)
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:251)
    at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
    at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:332)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:233)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
    at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
    at java.lang.Thread.run(Thread.java:619)
我的班级:

public interface UnitServiceAsync {
    void findAll(AsyncCallback<ListLoadResult<OrgUnitDTO>> callback);
}

@RemoteServiceRelativePath("Unit")
public interface UnitService extends RemoteService {

    ListLoadResult<OrgUnitDTO> findAll();
}

public class PersistenceService extends RemoteServiceServlet {
    ...
}
公共接口UnitServiceAsync{ void findAll(异步回调); } @RemoteServiceRelativePath(“单位”) 公共接口UnitService扩展了RemoteService{ ListLoadResult findAll(); } 公共类PersistenceService扩展了RemoteServiceServlet{ ... } 及其实施:

public class UnitServiceImpl extends PersistenceService implements UnitService {
    private static final long serialVersionUID = -1433248587426826168L;

    @Override
    public ListLoadResult<OrgUnitDTO> findAll() {
        ...
        List<OrgUnitDTO> subList = new ArrayList<OrgUnitDTO>(); 
        ...
        return new BaseListLoadResult<OrgUnitDTO>(subList);
    }
}

public class OrgUnitDTO extends BaseModel implements IsSerializable {
private static final long serialVersionUID = 2392916533158255302L;

    //getters
    //setters

    public OrgUnitDTO() {}
}
公共类UnitServiceImpl扩展PersistenceService实现UnitService{
私有静态最终长serialVersionUID=-14332485887426826168L;
@凌驾
公共ListLoadResult findAll(){
...
列表子列表=新的ArrayList();
...
返回新的BaseListLoadResult(子列表);
}
}
公共类OrgUnitDTO扩展BaseModel实现IsSerializable{
私有静态最终长serialVersionUID=239291653158255302L;
//吸气剂
//二传手
公共组织单元到(){}
}
我经历了很多解决方案,比如: 类应实现可序列化或IsSerrializable接口,应提供默认构造函数等。
最有趣的是,在tomcat上它对我来说很好,但在glassfish上——这是个例外。
我不知道该怎么办,请帮帮我。
谢谢。

我也遇到过同样的问题,但就我而言,只是在devmode中。所有RPC规则都放在生成的“RPC”文件夹中,您应该检查它在您的服务器上是否可用。同样,从服务器抛出的问题您可以简单地调试它,问题应该在GWT采用rpc策略并根据您的请求匹配它们的某个地方

附言。 根据我的经验,避免这些情况的最好方法是不要使用GXT类作为dto对象,尤其是GXT 2类。

我解决了这个问题。
WEB-INF/lib文件夹中有一个jetty libs。当我删除此LIB时,所有操作都正常。
谢谢。

您能告诉我有关“rpc”文件夹的更多信息吗?文件夹是什么?它放在哪里?