2012-03-01 12 views
5

Mi proyecto GWT funcionaba bien pero hoy, después de algunos cambios y agregar nuevas características, no se ejecuta una llamada asincrónica . La excepción es "Esta aplicación está fuera de fecha, haga clic en el botón Actualizar en su navegador". todas las demás llamadas asincrónicas se ejecutan.IncompatibleRemoteServiceException: esta aplicación no está actualizada, haga clic en el botón Actualizar en su navegador

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); 

     } 
    }); 

interfaz

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

    FCollection getRepositories(); 
} 

AsyncInterface

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

Servicio

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

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

servidor

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> 

alguien me ayude a solucionar este problema.

Respuesta

7

Este error se produce si el código JavaScript que se está ejecutando en el navegador es una versión diferente a Javascript implementado en el servidor. En ese caso, en el código JavaScript del navegador se invoca un método en el servidor mediante Async y el número de parámetros o tipos de parámetros de ese método ha cambiado en el servidor, este método no está presente ya que el servidor GWT no puede encontrar un método con ese número de parámetros o tipos, ya que los métodos en el servidor son más recientes. Esto puede suceder si el navegador todavía tiene el GWT Javascript almacenado en caché y cuando inicia el navegador no cargará los nuevos archivos JavaScript del servidor, sino que tomará los archivos locales del caché. Al forzar el navegador con Ctrl-F5 para actualizar la versión en caché local en el navegador se habrá ido ya que la nueva versión del servidor se recuperará y este problema debería solucionarse. En producción, este problema puede deberse a que la configuración de caché del servidor web o del servidor java no está configurada para invalidar el archivo nocache. Véase también http://code.google.com/webtoolkit/doc/latest/DevGuideCompilingAndDebugging.html#perfect_caching

+0

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

0

Tras realizar los cambios del servidor en el código necesario para relanzar el proyecto o volver a cargar el servidor web .. Sería resolver el problema

1

El error puede ser resuelto por una de las siguientes maneras:

  1. caché del navegador borrar la memoria caché de servidor web
  2. compensación
  3. archivos de clase de compensación y la reconstrucción de su proyecto. Puede reconstruir su proyecto ejecutando las fases "limpiar" e "instalar" de Maven o el menú "Build -> Rebuild Project" de IntellijIdea y el menú "Proyecto -> Limpiar" en Eclipse.
+0

Paso 3 trabajado para mí. Aparentemente, algunos archivos obsoletos estaban causando los conflictos. –

Cuestiones relacionadas