gwt中的会话管理

Don*_*onX 10 ajax session gwt rpc

我在客户端应用程序中使用GWT.但是,我不确定如何处理会话管理.GWT应用程序驻留在一个页面上,所有服务器调用都通过AJAX完成.如果会话在服务器上过期.让我们假设用户没有关闭浏览器,并使用RPC向服务器发送一些请求,我的服务器如何通知应用程序会话已经过期以及客户端部分应该再次显示登录屏幕?我的示例代码:

ContactDataServiceAsync contactDataService = GWT
                .create(ContactDataService.class);
        ((ServiceDefTarget) contactDataService).setServiceEntryPoint(GWT
                .getModuleBaseURL()
                + "contactDatas");

        contactDataService.getContact(2,
                new AsyncCallback<ContactData>() {
                    public void onFailure(Throwable caught) {
                                      //code to show error if problem in connection or redirect  to login page

                    }

                    public void onSuccess(ContactData result) {
                        displayContact(result);
                    }
                });
Run Code Online (Sandbox Code Playgroud)

如果会话到期,则只需要显示登录屏幕,否则它希望使用Window.alert()显示一些错误.

如何做到这一点以及服务器端和客户端所需的所有代码是什么?

Sil*_*rom 6

如果用户已注销,您可以让服务器向客户端抛出AuthenticationException.
这将在回调onFailure方法中捕获,然后该方法可以将用户重定向到登录页面.

编辑:
AuthenticationException当然不是标准的例外,我只是做了一个例子.最好坚持使用标准例外.

要尝试捕获特定异常,可以使用instanceof运算符

    public void onFailure(Throwable e) {
                  if(e instanceof AuthenticationException) {
                        redirecttoLogin();
                  }
                  else {
                    showError(),
               }
            }
Run Code Online (Sandbox Code Playgroud)