2012-03-01 11 views
5

mio GWT progetto stava lavorando bene, ma oggi, dopo alcune modifiche e l'aggiunta di nuove fetures una chiamata asincrona non viene eseguita. L'eccezione è "Questa applicazione è fuori di data, fare clic sul pulsante Aggiorna sul browser." tutte le altre chiamate asincrone vengono eseguite.IncompatibleRemoteServiceException: Questa applicazione non è aggiornata, fare clic sul pulsante di aggiornamento del browser

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) 

Cliente:

 public void onClick(ClickEvent event) { 

          fService.getRepositories(repocallback); 

     } 
    }); 

interfaccia

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

    FCollection getRepositories(); 
} 

AsyncInterface

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

Servizio

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> 

Qualcuno mi aiuti a risolvere questo problema.

risposta

7

Questo errore viene generato se il codice Javascript in esecuzione nel browser è una versione diversa come Javascript distribuito sul server. In questo caso nel codice JavaScript nel browser chiama un metodo sul server tramite Async e il numero di parametri o tipi di parametri del metodo è cambiato sul server questo metodo non è presente poiché il lato server GWT non riesce a trovare un metodo con quello numero di parametri o tipi, poiché i metodi sul server sono più recenti. Ciò può accadere se il browser ha ancora il GWT Javascript memorizzato nella cache e quando si avvia il browser non carica i nuovi file JavaScript dal server, ma preleva i file locali dalla cache. Forzando il browser con Ctrl-F5 per aggiornare la versione cache locale nel browser, la nuova versione dal server verrà recuperata e questo problema dovrebbe essere risolto. In produzione questo problema può essere causato se le impostazioni della cache del server web o del server java non sono impostate per invalidare il file nocache. Vedere anche http://code.google.com/webtoolkit/doc/latest/DevGuideCompilingAndDebugging.html#perfect_caching

+0

@Hibrand Bouwkamp http://stackoverflow.com/a/9531020/1046176 – NewCodeLearner

0

Dopo aver apportato le modifiche lato server nel codice è necessario rilanciare il progetto o ricaricare il server web .. Sarebbe risolvere il problema

1

L'errore può essere risolto da uno dei seguenti modi:

  1. file di classe a svuotare la cache del browser a svuotare la cache web-server
  2. compensazione e ricostruire il vostro progetto. Puoi ricostruire il tuo progetto eseguendo "pulito" e "installa" le fasi di Maven o il menu "Crea -> Ricostruisci progetto" di IntellijIdea e il menu "Progetto -> Pulisci" in Eclipse.
+0

Fase 3 ha lavorato per me. Apparentemente alcuni file stanti stavano causando i conflitti. –

Problemi correlati