2015-01-07 3 views
0

Я использую SUPER DEV РЕЖИМА запустить свой существующий проект (построен с использованием GWT SDK 2.5.0). Все работает нормально, но только проблема в том, что Я не могу звонить на мои RPC. Я пробовал решение, то есть установил -Dgwt.codeserver.port = 9876 в аргументах VM, но все же я не могу вызвать RPC . Это дает мне следующее исключение: -Невозможно использовать GWT-RPC в режиме супер-DEV после установки -Dgwt.codeserver.port = 9876

[WARN] springGwtRemoteServiceServlet: An IncompatibleRemoteServiceException was thrown while processing this call. 
com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException: Type 'com.xxx.appcore.client.ui.ActionMode' was not assignable to 'com.google.gwt.user.client.rpc.IsSerializable' and did not have a custom field serializer. For security purposes, this type will not be deserialized. 
    at com.google.gwt.user.server.rpc.RPC.decodeRequest(RPC.java:323) 
    at org.spring4gwt.server.SpringGwtRemoteServiceServlet.processCall(SpringGwtRemoteServiceServlet.java:32) 
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248) 
    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:395) 
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488) 
Caused by: com.google.gwt.user.client.rpc.SerializationException: Type 'com.lbtmind.appcore.client.ui.ActionMode' was not assignable to 'com.google.gwt.user.client.rpc.IsSerializable' and did not have a custom field serializer. For security purposes, this type will not be deserialized. 
    at com.google.gwt.user.server.rpc.impl.LegacySerializationPolicy.validateDeserialize(LegacySerializationPolicy.java:127) 
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserialize(ServerSerializationStreamReader.java:651) 
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.readObject(ServerSerializationStreamReader.java:567) 
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader$ValueReader$8.readValue(ServerSerializationStreamReader.java:140) 
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserializeValue(ServerSerializationStreamReader.java:425) 
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserializeClass(ServerSerializationStreamReader.java:807) 
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserializeImpl(ServerSerializationStreamReader.java:878) 
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserialize(ServerSerializationStreamReader.java:662) 
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.readObject(ServerSerializationStreamReader.java:567) 
    at com.google.gwt.user.server.rpc.core.java.util.Collection_ServerCustomFieldSerializerBase.deserialize(Collection_ServerCustomFieldSerializerBase.java:38) 
    at com.google.gwt.user.server.rpc.core.java.util.ArrayList_ServerCustomFieldSerializer.deserialize(ArrayList_ServerCustomFieldSerializer.java:40) 
    at com.google.gwt.user.server.rpc.core.java.util.ArrayList_ServerCustomFieldSerializer.deserializeInstance(ArrayList_ServerCustomFieldSerializer.java:54) 
    at com.google.gwt.user.server.rpc.core.java.util.ArrayList_ServerCustomFieldSerializer.deserializeInstance(ArrayList_ServerCustomFieldSerializer.java:33) 
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserializeImpl(ServerSerializationStreamReader.java:859) 
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserialize(ServerSerializationStreamReader.java:662) 
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.readObject(ServerSerializationStreamReader.java:567) 
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader$ValueReader$8.readValue(ServerSerializationStreamReader.java:140) 
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserializeValue(ServerSerializationStreamReader.java:425) 
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserializeClass(ServerSerializationStreamReader.java:807) 
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserializeImpl(ServerSerializationStreamReader.java:878) 
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserialize(ServerSerializationStreamReader.java:662) 
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.readObject(ServerSerializationStreamReader.java:567) 
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader$ValueReader$8.readValue(ServerSerializationStreamReader.java:140) 
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserializeValue(ServerSerializationStreamReader.java:425) 
    at com.google.gwt.user.server.rpc.RPC.decodeRequest(RPC.java:312) 
    ... 22 more 

Пожалуйста, предоставьте мне решение этой проблемы. Thanx хорошо заранее .. !!

ответ

0

Проверьте свой класс com.lbtmind.appcore.client.ui.ActionMode.

  • Либо он не реализует java.lang.Serializable или com.google.gwt.user.client.isSerializable
  • или он не имеет публичного конструктора без аргументов
  • или ваш widgetset необходимо перекомпилировать
  • или вам необходимо обновить WEB-INF/lib/gwt-servlet.jar к версии, которую вы создали с помощью
+0

: Thanx для вашего быстрого ответа. Фактически com.lbtmind.appcore.client.ui.ActionMode не является классом его enum.So не может реализовать какой-либо интерфейс. Также я перекомпилировал и обновил gwt-servlet.jar, но все равно проблема такая же. Я не думаю, что в кодировании есть какая-то проблема, потому что тот же проект отлично работает в обычном режиме Dev. Исключение происходит после использования режима Super Dev. –

+0

@ vishalsonawane Вы уверены, что супердемод и нормальный режим находятся на одной и той же версии GWT? – geert3

+0

@ geetrt3: Да, я уверен. Я использую свой существующий код для запуска его в режиме Super Dev, и я выполнил все необходимые шаги для него. Все работает отлично, т.е. проект компилируется и запускается в режиме Super Dev, но когда i запустить проект и попытаться использовать вызов RPC, это дает мне исключение. –

0

-Dgwt.codeserver.port был введен только в GWT 2.6.

Для более старых версий вы можете вручную скопировать политики сериализации с CodeServer на сервер, на котором размещены сервлеты; или переопределить doGetSerializationPolicy, чтобы загрузить его через HTTP с CodeServer (по адресу http://localhost:9876/). Посмотрите на код версии 2.6 для GWT на примере того, как это сделать.
... хотя, честно говоря, это, вероятно, проще просто обновить до GWT 2.6.1 или, что еще лучше, 2.7.0.

+0

: Спасибо за информацию, но я не знаю, как вручную устанавливать политики сериализации. Я имею в виду, откуда следует копировать их и где вставлять или изменять. Можете ли вы предоставить мне шаги? –

+0

Откройте страницу CodeServer на странице http: // localhost: 9876, вы должны найти их здесь; это файлы '.gwt.rpc'. Кстати, я просто помню альтернативу; обновляя мой ответ. –

+1

: - Я пробовал ваше решение, то есть я обновил свой SDK до версии 2.6.1, но теперь он дал мне следующую ошибку: –