2016-06-28 2 views
1

私のサーバー内のデータを更新する要求があります。私はデータを更新Javaが1つのリクエストから2つの応答を再生する

、私は10〜30秒かかり、非常重い計算を実行する必要があります。

私はこれをしたい:

  1. はその後、私のデータベース内のオブジェクトを更新し、サーバーにリクエストを取得し、計算を行うための新しいスレッドを開始し、クライアント
  2. から更新する要求を送信し、更新が完了したという応答をクライアントに返します。
  3. 計算が終了したら、クライアントに計算を終了したことを知らせる別の応答を送信します。

これで、クライアントに2つの更新情報が送信されました。

あなたは2つのエントリが必要ですあなたのルートで
+0

私のアプローチを変えましたか? 30秒? 5時間? – Salem

+0

時間は約10-30秒です –

答えて

0

:データベースへの更新を行います

  • つのルート(Controller.updateTheDatabase()を呼び出すことができます)
  • 重い計算を行いつのルート(できますがあなたはその後、 Controller.doHeavyCalculation())

(コンテキストなしで、それは良い名前を与えることは難しい)

それを呼び出しますあなたのコントローラ

  1. doHeavyCalculationでこれらの機能のそれぞれを定義します。あなたの計算サービスはupdateTheDatabase
  2. 非同期
  3. 呼び出す:あなたはこれをしたら、非同期

データベース更新を送信し、あなたを呼び出すことができますAPIを使用し、2つの応答separately(私はAJAX JavaScriptで行う)を使用して情報メッセージを更新します。

私はScalaでPlayFrameworkを使用しています。コードの塊に手伝ってもらえない場合は申し訳ありませんが、私はあなたのような問題に遭遇しました。ここで

the documentation for Asynchronous requests

EDITです:もう一度質問を読んだ後、私は「しばらくの間」とは何

+1

Thnx alot!私はこれを試しましたが、最初の結果(更新 - 真(完了))を返したときに私は戻ってきたので、計算からの応答を再度送ってください –

+0

私の更新 – Daniel

+1

を見てください! Thnx alot :))、私の問題はサーバーからのみそれをやっていた。ありがとう:D –

関連する問題