ком.гугл.ГВт.пользователь.клиент.протокол RPC.IncompatibleRemoteServiceException



У меня проблема с моим приложением GWT. Я разворачиваюсь на сервере Jetty, и он запускается. Но когда я выполняю вызов сервера (class on server package of GWT), сервер возвращает сообщение об ошибке. Сообщение таково:



7|0|6|http://localhost/zbapp/zb_app/|A31E1254E17F9AD731856D6BE34124A2|main.java.com.gwt.app.client.GreetingService|greetServer|java.lang.String/2004016611||1|2|3|4|2|5|5|6|6|
//EX[2,1,["com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException/3936916533","This application is out of date, please click the refresh button on your browser. ( Expecting version 5 from client, got 7. )"],0,5]


Однако сервер возвращает код 200, который является ок.



Я обновил браузер, очистил кэш браузера и перекомпилировал приложение, но оно не запускается. Каково же решение этой проблемы??



Заранее спасибо!



С уважением!

498   3  

3 ответов:

Ваш клиент является uptodate, так как он отправляет запрос, используя версию 7 протокола GWT-RPC, но сервер ожидает версию 5. Убедитесь, что вы развернули правильную версию GWT-сервлета.jar, и / или что у вас нет более старой версии в пути к классу сервера, которая использовалась бы вместо той, что была в вашем веб-приложении.

Более конкретно, у вас есть GWT-сервлет.jar от GWT между 1.5 и 2.0 (версия 5 Протокола GWT-RPC), в то время как ваш клиентский код был скомпилирован с GWT 2.1 или новее (версия 7 протокола).

Проблема решена (по крайней мере, моя версия этого)

Ошибка: Исключение, возникающее при обработке этого вызова: неизвестный метод - > исключение: com.гугл.ГВт.пользователь.клиент.протокол RPC.IncompatibleRemoteServiceException сообщение: Это приложение устарело, пожалуйста, нажмите кнопку Обновить в вашем браузере. (Ожидая версию 5 от клиента, получил 7. )

Решение: Посмотрите, какая зависимость тянет в модуле GWT-user (jar), потому что это-вероятная причина проблемы. Сначала проверьте удаление то GWT-user jar из вашей папки LIB устраняет проблему, а затем вы можете также изменить Maven, чтобы использовать исключение для "gwt-user" следующим образом:

<dependency>
    <groupId>com.google.gwt.google-apis</groupId>
    <artifactId>gwt-visualization</artifactId>
    <version>1.0.2</version>
    <exclusions>
        <exclusion>
          <groupId>com.google.gwt</groupId>
          <artifactId>gwt-user</artifactId>
        </exclusion>
        </exclusions>
</dependency>

Я изменил библиотеки, и ошибка исчезла. Однако ошибка меняется. Теперь моя ошибка:

//EX[2,1,["com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException/3936916533","Could not locate requested interface 'main.java.com.gwt.app.client.GreetingService' in default classloader"],0,7]

Но интерфейс находится в classloader.

Затем необходимо переопределить метод 'service' из HttpServlet:

@Override 
protected void service(HttpServletRequest req, HttpServletResponse resp) 
        throws ServletException, IOException { 
    // Cache the current thread 
    Thread currentThread = Thread.currentThread(); 
    // We are going to swap the class loader 
    ClassLoader oldContextClassLoader = 
    currentThread.getContextClassLoader(); 
    currentThread.setContextClassLoader(this.getClass().getClassLoader()); 
    super.service(req, resp); 
    currentThread.setContextClassLoader(oldContextClassLoader); 
} 

Таким образом, приложение работает в день равноденствия!!

Comments

    Ничего не найдено.