2015-03-10 6 views
0


У меня есть исключение SerializationException в вызове RPC.
GWT версия: 2.4.0.
Версия extjs.gxt lib: gxt-2.3.1-gwt22.
Если я развожу свое приложение в tomcat 7, это работает, bu в glassfish - нет.
Помогите мне, пожалуйста. Сервер Glassfish v3.GWT: Исключение при отправке входящего вызова RPC для com.extjs.gxt.ui.client.data.BaseListLoadResult

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 = [email protected] 
    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 { 
    ... 
} 

и его реализация:

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() {} 
} 

Я прошел через много решений, как: класс должен реализовывать сериализуемые или IsSerrializable интерфейсы, должны дали конструктор по умолчанию и т. д.
Самое интересное, что на tomcat это отлично работает для меня, но на стеклянной рыбке - это исключение.
Я не знаю, что мне делать, помогите мне, пожалуйста. Спасибо.

ответ

0

Я решил эту проблему.
В папке WEB-INF/lib была лифта для причалов. когда я удалил это libs - все работало нормально.
Спасибо.

0

Я столкнулся с теми же проблемами, но в моем случае только в devmode. Все правила RPC, помещенные в созданную папку «rpc», вы должны проверить, что она доступна и актуальна на вашем сервере. Кроме того, проблема с сервера, которую вы можете просто отладить, проблема должна быть где-то GWT принимает политики rpc и сопоставляет их по вашему запросу.

P.S. По моему опыту, лучший способ избежать таких ситуаций - не использовать классы GXT как объекты dto, особенно классы GXT 2.

+0

Ты можешь больше узнать о папке "rpc"? что такое папка и где она размещена? – bito4ek

 Смежные вопросы

  • Нет связанных вопросов^_^