IncompatibleRemoteServiceException: This applicati

2019-05-02 00:36发布

My GWT Project was working fine but today, after some changes and adding new fetures one async call is not executed. The exception is "This application is out of date, please click the refresh button on your browser." all other async calls are executed.

 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)

Client :

     public void onClick(ClickEvent event) {

                            fService.getRepositories(repocallback);

        }
    });

Interface

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

    FCollection getRepositories();
 }

AsyncInterface

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

Service

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

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

Server

 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>

Somebody help me to fix this problem.

3条回答
够拽才男人
2楼-- · 2019-05-02 00:49

After making server side changes in your code you need to relaunch the project or reload the webserver.. It would resolve the issue

查看更多
乱世女痞
3楼-- · 2019-05-02 00:56

This error is thrown if the Javascript code that is running in the browser is a different version as Javascript deployed on the server. In that case in the JavaScript code in the browser calls a method on the server via Async and that method's number of parameters or parameter types have changed on the server this method is not present as the GWT server side can't find a method with that number of parameters or types, since the methods on the server are newer. This can happen if the browser still has the GWT Javascript cached and when you start the browser it won't load the new JavaScript files from the server, but takes the local files from cache. By forcing the browser with Ctrl-F5 to refresh the local cached version in the browser will be gone as the new version from the server will be retrieved and this problem should be fixed. In production this problem can be caused if the cache settings of the webserver or java server not set to invalidate the nocache file. See also http://code.google.com/webtoolkit/doc/latest/DevGuideCompilingAndDebugging.html#perfect_caching

查看更多
劫难
4楼-- · 2019-05-02 01:06

The error can be resolved by one the following ways:

  1. clearing browser cache
  2. clearing web-server cache
  3. clearing class files and rebuilding your project. You can rebuild your project by running "clean" and "install" phases of maven or "Build -> Rebuild Project" menu of IntellijIdea and "Project -> Clean" menu in Eclipse.
查看更多
登录 后发表回答