2011-08-01 20 views
1

GWTアプリでタイムアウトリクエストを処理するにはどうすればよいですか? は、ここに私のweb.xmlファイルのスニップです:(MVPプレイスとアクティビティで)セッションタイムアウト例外を処理する方法は?

<session-config> 
<session-timeout>30</session-timeout> 
</session-config> 

私のGWTプロジェクトがMVP活動と場所に基づいています。 ユーザーが3,000万人以上待つたびに、ポップアップを表示してユーザーをログインページにリダイレクトします。ここで私は すべてのRPCサービスのために何をすべきかです:

public void onFailure(Throwable caught) { 
    ... 
    if (caught instanceof InvocationException) { 
        { 
         Window.alert("Time out de session. Veuillez vous reconnecter. 2"); 
         Window.open(GWT.getHostPageBaseURL() + "identification.html", "_self", null); 
         return; 
        } 
    ...} 

それはしかし、いくつかの物事が迷惑している作品: 1)キャッチした例外はRequestTimeoutExceptionする必要があります。しかし、キャッチされていないので、私は代わりにInvocationExceptionを使用しています。 どうしてそれは捕まえられませんか? 2)どのように私はより一般的な方法でこの例外を処理できますか?すべてのRPCサービスでその例外を捕まえなければならないのはちょっと愚かです... 私はいくつかのAsyncCallbackAdapterクラスについて読んでいます... 3)今はRPCサービスのみを処理しますが、もちろん例外はどこでも発生します:リンク、ページリフレッシュ... 私はMVPプレイスとアクティビティを使用しています。 ユーザーが場所に移動しようとしたときにその例外をキャッチする方法はありますか?サーバが応答しない場合

答えて

2
  1. RequestTimeoutExceptionを支援するための

    おかげでスローされます。

  2. SessionTimeoutExceptionのような独自のチェック例外を作成し、それをクライアントコードで処理する必要があります。 GWTを処理する方法を知っている(シリアライズ)例外をチェックし、クライアントコードに渡す:http://code.google.com/webtoolkit/doc/latest/tutorial/RPC.html#exceptions

    アプリケーション全体の方法でこれを処理するには、あなたのリモートサービスのための独自のジェネレータを作成することにより、RPCメカニズムにフックすることができます:How to redirect to login page after session expire in GWT RPC call

  3. 最も簡単な方法は(既存のコードをすべて変更せずに)Timerに(数分おきに)サーバーセッションを定期的にチェックするように設定することです。セッションタイムアウトがモーダルDialogBox(他のウィジェットに対するユーザー入力を防止する)を示している場合、ユーザーに通知し直す必要があります。

関連する問題