GWT-客户端如何检测到它';如果服务器更新,则s的javascript将不同步

GWT-客户端如何检测到它';如果服务器更新,则s的javascript将不同步,gwt,browser,asynchronous,webserver,gwt-rpc,Gwt,Browser,Asynchronous,Webserver,Gwt Rpc,我有一个GWT应用程序,用户可以无限期地打开基于浏览器的应用程序。我们经常升级应用程序—如果用户在完成后在浏览器中点击“重新加载”,那么一切都会正常进行。然而,通常发生的情况是,他们继续使用已经打开的应用程序版本,即升级之前提供的版本,然后遇到与RPC相关的模糊错误,因为客户端Javascript不再与服务器上的内容同步 GWT是否有任何机制,您可以在代码中启用或合并这些机制来处理此问题。我不需要对这种情况进行任何巧妙的处理,例如尝试重新加载应用程序并重新建立用户的当前状态,一个简单的对话框解释

我有一个GWT应用程序,用户可以无限期地打开基于浏览器的应用程序。我们经常升级应用程序—如果用户在完成后在浏览器中点击“重新加载”,那么一切都会正常进行。然而,通常发生的情况是,他们继续使用已经打开的应用程序版本,即升级之前提供的版本,然后遇到与RPC相关的模糊错误,因为客户端Javascript不再与服务器上的内容同步


GWT是否有任何机制,您可以在代码中启用或合并这些机制来处理此问题。我不需要对这种情况进行任何巧妙的处理,例如尝试重新加载应用程序并重新建立用户的当前状态,一个简单的对话框解释客户端和服务器不再同步,web应用程序需要重新加载就足够了。

它被称为,谷歌的文档中提到了如何处理异常,包括这个异常。

该界面的文档给出了如何处理异常的提示

   public void onFailure(Throwable caught) {
     // Convenient way to find out which exception was thrown.
     try {
       throw caught;
     } catch (IncompatibleRemoteServiceException e) {
       // this client is not compatible with the server; cleanup and refresh the 
       // browser
     } catch (InvocationException e) {
       // the call didn't complete cleanly
     } catch (ShapeException e) {
       // one of the 'throws' from the original method
     } catch (DbException e) {
       // one of the 'throws' from the original method
     } catch (Throwable e) {
       // last resort -- a very unexpected exception
     }
   }

您很可能想要处理(弹出用户对话框)。

现在我看到堆栈跟踪时感到很尴尬。我通常跳转到最低的原因,通常忽略包装异常。如果我查看顶级异常,我会看到不兼容的RemoteServiceException,并且可能会从名称中得到一个提示-相反,我只关注包含的SerializationException。