Después de muchos casos de soporte, nos estamos dando cuenta de que el mayor problema que tenemos con nuestra aplicación basada en GWT es que los usuarios la dejan abierta durante semanas. Esto significa que cuando realizamos una revisión cada semana o dos, los stubs de RPC no están sincronizados y ocasionamos excepciones silenciosas que hacen que el sitio se vea "roto". ¿Alguien sabe de una forma de detectar automáticamente y evitar este problema? Algunas ideas que he tenido son ...¿Manera elegante de detectar si la aplicación GWT está desactualizada y el navegador de actualización automática?
- Al detectar una excepción de desajuste RPC, actualice el navegador.
- Al cargar la página de host, inserte el número de versión en el control de origen de donde provino la compilación, tenga un comprobador de estado/temporizador que verifique que el número no haya cambiado. Cuando se recarga
- Recargue en un temporizador arbitrario (quizás dos veces al día).
¿Alguna idea?
Me gustaría ir con la opción 1, ya que será consistentemente una 'IncompatibleRemoteServiceException'. Captura eso, dales un bonito mensaje de error y 'location.reload (true);'. – Strelok
Según el [javadoc] (http://google-web-toolkit.googlecode.com/svn/javadoc/latest/com/google/gwt/user/client/rpc/IncompatibleRemoteServiceException.html), IncompatibleRemoteServiceException no se lanza cuando simplemente cambia la implementación de un método de servicio sin agregar o eliminar campos. Por lo tanto, voy con mi versión de la opción 2: tener el número de compilación en el lado del cliente. Cada llamada GWT RPC debe enviar este número de compilación al servidor. Puede verificar si el número de compilación es el último en el lado del servidor, si no puede actualizar la página. –