私はSpringフレームワーク(そしてほとんどのWeb開発一般)には全く慣れていませんが、いくつかの重いJavaバックエンドコードを新しいSpringおよびJSPプロジェクトに取り込もうとしています。私のコントローラのhandleRequest()
は、私のrequest.jsp ModelAndView
オブジェクトを返す前に、長時間実行されているワーカースレッドを開始しています。その後、フォーム内のボタンをクリックするたびにコントローラー内のisThreadDone()
を呼び出すことができるように、私のJSPフォームからこのコントローラーと引き続きインターフェースすることができます。 3つの異なる結果に基づいて、私はそれに応じてリダイレクトします。私の現在のアプローチで可能ですか?これはSpring MVCのアプローチのいくつかに違反しているようですが、これを行う良い方法を考えることはできません。ここに何かがあるなら、私の無知を許してください。前もって感謝します。ボタンonClickコールのJavaメソッドを特定の結果まで
0
A
答えて
1
Spring @Async
アノテーションをご覧ください。その注釈を持つサービスレイヤーBeanに注釈を付けると、独自のスレッドで実行され、Serviceメソッドを呼び出した後でControllerスレッドが中断することなく実行されます。そのスレッドは、synchronous
メソッドを介してサービスのクラスレベルで保持されている値に設定されています。コントローラコードは、プロセスが完了したかどうかを確認するためにそれらのトグルをチェックできます。コントローラーで
@Service
public myServiceClass {
private boolean isDone = false;
public synchronized void setIsDone(boolean isDone) {
isDone = isDone;
}
public synchronized boolean getIsDone() {
return isDone;
}
@Async
public void myServiceMethod() {
...long-running stuff...
setIsDone(true);
}
:ような何か
@Controller
class MyController {
@RequestMapping
public kickOffHandlerMethod() {
myServiceClass.myServiceMethod();
}
}
@RequestMapping
public dependentHandlerMethod() {
if(myServiceClass.getIsDone()) {
...do something...
}
}
}
に複数の要求がプロセスをキックオフする可能性がある場合は、その後、私は、識別子のいくつかの種類にはHashMapの各isDone
トグルを保存します。次に、スレッドは個々のトグルを更新します(要求ごとに1つ)。
1
まあ、何でもできますよね?あなたが提供した内容に基づいて、おそらくHttpSessionのスレッドへの参照を保持することができます。新しいリクエストがボタンをクリックしたときに、それを照会して適切な応答を返すことができます。
関連する問題
- 1. ボタンのonClickメソッド
- 2. 特定のボタンのjquery検証onclick
- 3. Java xmlは特定の結果を解析しています:
- 4. のJavaのtoArray()メソッド:プリミティブ結果型
- 5. Neo4j - 特定のノードから一致結果の結果を返します。
- 6. 特定の列のNull結果 - php/mysql
- 7. 特定のフィールドでSolrの結果をブーストしますか?
- 8. arangeアレイ結果、特定のキー
- 9. コール同じonclickの
- 10. UIAlertViewでボタンを押した結果をC++メソッドに戻す
- 11. onClickは2回のクリックで結果を入力しますHighCharts
- 12. onclickイベントの結果が消える
- 13. Serenium store Webサービスの結果/ AJAXコール
- 14. 特定の結果をlinqから除外します
- 15. AndroidのJavaファイルを読み込み、結果をメソッド
- 16. Sphinx - 結果を特定の順序で並べ替え
- 17. ボタンでonclickイベントを設定するエラー
- 18. この特定の「クエリ」の結果を取得する方法
- 19. PHP/SQL - 特定のページの結果の量を制限する
- 20. Java:拡張クラスの特定のメソッドを禁止しますか?
- 21. ajaxコールの後に特定のボタンの値を変更する方法
- 22. キャッシュのSQL結果をJavaで設定する
- 23. IDの結果を返す特定のテーブル
- 24. スウィフトコアデータ特定の日付からの結果を取得する
- 25. PdhExpandWildCardPathの結果のプライマリネットワークアダプタを特定する方法は?
- 26. クリックできないボタンはonClickメソッドに入ります
- 27. 特定の範囲の間でsybase ASEの結果が制限されます
- 28. javaでmatlabの結果を取得
- 29. スイッチのonClickボタン
- 30. remove:ボタンのonclickを
私はそれについて考えましたが、解決策ではなく回避策のように思えます。それが最良の方法だとすれば、それが最善の方法です。ご協力いただきありがとうございます! – Matt
@Matt:あなたはそれについて心配していますか?あなたのシナリオを少し明確に定義すれば、より適切な解決策が出るかもしれません。 –