2012-01-03 10 views
0

GETメソッドを含むRestletサービスを作成しました。このGETメソッドで呼び出しが発生すると、私のブール変数の1つが真になるまでリクエストを待つ必要があります。 (私はタイマーが良い解決策ではないと思う、それは非同期なので)。 GWTで利用可能な関数はありますか?Webリクエストを特定の間隔で待機させるにはどうすればいいですか?

+0

このブール変数は何ですか?それはどこから来たのですか?ブール変数が、リクエストが待機しているGAEインスタンス以外のGAEインスタンスで真になる場合はどうなりますか?リクエストは30秒後にタイムアウトします。それは気付いていますか? GAEでスレッディングが制限されていることをご存知ですか?これのより一般的な目的は何ですか? –

+0

ブール変数は静的クラスからのものです。実際には、これは2つのクライアント間の通信の簡単な方法です。また、私はそのタイムアウトを認識しています。私はこのチェックを10秒間だけしたい。その変数が偽であれば、私はこれをクライアントからの無応答(オフライン)と見なします。 – Vivek

+2

悪い考え。各ユーザーが同じインスタンスを取得する保証はありません。 2つのクライアント間の通信は、永続的なストアを経由する必要があります。 – fdreger

答えて

1

あなたは本当にこれをしたい場合は、単に同期ブール変数へのアクセスを行い、10秒待っ:

private static boolean status; 

private final Object lock = new Object(); 

public void setStatus(boolean newStatus) { 
    synchronized(lock) { 
     this.status = newStatus; 
     if (this.status) { 
      lock.notifyAll(); 
     } 
    } 
} 

public boolean getTrueStatusOrBlock() throws InterrupedException { 
    synchronized(lock) { 
     if (status) { 
      return true; 
     } 
     lock.wait(10000L); 
     return status; 
    } 
} 
+0

異なる要求が同じインスタンスを使用することを保証できないため、これは機能しません。 –

+0

私は同意し、彼の質問に対する私の最初のコメントでOPに警告した。 –

+0

あなたの回答にはそのような免責事項はありません。私は確かに動作しない答えを投稿する際のポイントを確認するか分からない。 –

関連する問題