IncompatibleRemoteServiceException: это приложение устарело, пожалуйста, нажмите кнопку обновления в вашем браузере - PullRequest
5 голосов
/ 01 марта 2012

Мой проект GWT работал нормально, но сегодня, после некоторых изменений и добавления новых выборок, один асинхронный вызов не выполняется.Исключение составляет «Это приложение устарело, нажмите кнопку обновления в браузере».все остальные асинхронные вызовы выполняются.

 An IncompatibleRemoteServiceException was thrown while processing this call.
 com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException: This application is out of date, please click the refresh button on your browser. ( Blocked attempt to access interface 'com.client.FInterface', which is not implemented by 'com.server.FServiceImpl'; this is either misconfiguration or a hack attempt )
at com.google.gwt.user.server.rpc.RPC.decodeRequest(RPC.java:252)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:206)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)

Клиент:

     public void onClick(ClickEvent event) {

                            fService.getRepositories(repocallback);

        }
    });

Интерфейс

   @RemoteServiceRelativePath("init")
  public interface FInterface extends RemoteService{    

    FCollection getRepositories();
 }

AsyncInterface

  public interface FInterfaceAsync {
void getRepositories(AsyncCallback<FCollection> repositoryCallback);
}

Сервис

   public class FService implements FInterfaceAsync {
FInterfaceAsync service =(FInterfaceAsync)GWT.create(FInterface.class);
ServiceDefTarget endpoint = (ServiceDefTarget) service;

    public FService(){
    endpoint.setServiceEntryPoint(GWT.getModuleBaseURL() + "init");
     }
        }

Сервер

 public class FServiceImpl extends RemoteServiceServlet implements  FInterface {

       public FilnetFolderCollection getRepositories() {
       } 

 }

XML:

   <servlet>
   <servlet-name>FServlet</servlet-name>
  <servlet-class>com.server.FServiceImpl</servlet-class>
  </servlet>

  <servlet-mapping>
  <servlet-name>FServlet</servlet-name>
  <url-pattern>/FServiceImpl</url-pattern>
  </servlet-mapping>

Кто-нибудь поможет мне решить эту проблему.

Ответы [ 3 ]

7 голосов
/ 02 марта 2012

Эта ошибка выдается, если код Javascript, который выполняется в браузере, отличается от версии, развернутой на сервере на Javascript.В этом случае в коде JavaScript в браузере вызывается метод на сервере через Async, и на сервере изменилось количество параметров или типов параметров этого метода, этот метод отсутствует, так как серверная часть GWT не может найти метод сколичество параметров или типов, поскольку методы на сервере более новые.Это может произойти, если в браузере по-прежнему хранится GWT Javascript, и при запуске браузера он не загружает новые файлы JavaScript с сервера, а извлекает локальные файлы из кэша.Если принудительно обновить браузер с помощью Ctrl-F5, обновите локальную кэшированную версию в браузере, так как будет получена новая версия с сервера, и эту проблему следует устранить.В производственной среде эта проблема может быть вызвана тем, что настройки кэша веб-сервера или java-сервера не настроены для аннулирования файла nocache.Смотри также http://code.google.com/webtoolkit/doc/latest/DevGuideCompilingAndDebugging.html#perfect_caching

1 голос
/ 16 сентября 2017

Ошибка может быть устранена одним из следующих способов:

  1. очистка кеша браузера
  2. очистка кэша веб-сервера
  3. очистка файлов классов и перестройка вашего проекта. Вы можете перестроить свой проект, запустив фазы "clean" и "install" в maven или меню "Build -> Rebuild Project" IntellijIdea и меню "Project -> Clean" в Eclipse.
0 голосов
/ 21 марта 2013

После внесения изменений в код на стороне сервера вам необходимо перезапустить проект или перезагрузить веб-сервер. Это решит проблему

...