2012-04-23 24 views
9

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?

  1. Al detectar una excepción de desajuste RPC, actualice el navegador.
  2. 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
  3. Recargue en un temporizador arbitrario (quizás dos veces al día).

¿Alguna idea?

+3

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

+0

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. –

Respuesta

1

Me gustaría presentar una cuarta opción.

Cree un Proxy RPC y un proxy de objeto UI al que se enruten todas las solicitudes de UI y las solicitudes RPC. De esta forma, siempre que este proxy detecte que algo está desactualizado, puede cargar dinámicamente el widget o cambiar los modelos RPC esperados.

Así es como Vaadin hace las cosas y funciona muy bien. Vaadin es un conjunto de herramientas de interfaz de usuario basado en GWT en caso de que no lo sepa. Tenemos varias aplicaciones de producción de larga duración que utilizan esto en los últimos años y hemos realizado algunos ajustes en su lenguaje de UI Def (UIDL) para agregar desajuste de versión.

Este diagrama es una buena representación de lo que hacen y si no quiere construir algo como esto usted mismo, por supuesto, recomendaría mudarse a Vaadin.

Vaadin Client Side Architecture

0

implementar la seguridad que registra los usuarios a cabo después de una hora de tiempo de inactividad. Asumiendo que sus lanzamientos son durante la noche o los fines de semana, los usuarios inician sesión después del lanzamiento. No es necesario actualizar la aplicación. esto es viable especialmente si su sitio finalmente necesita que los usuarios inicien sesión.

Cuestiones relacionadas