ステートレスEJBをRESTサービスとして公開しています。私のPOSTメソッドでは、私は、クライアント側からlongRunningBusinessMethod()の実行をキャンセルすることが可能となる行くにはどうすればよいJava:RESTサービスメソッドの実行をキャンセルします。
Result r = longRunningBusinessMethod();
//return data
呼び出しますか? 私は、メソッドのスレッドを作成し、すべての実行スレッドをIDとともにハッシュテーブルに保持することを考えました。ユーザーはIDをPOSTしてスレッドを終了できます。しかし、よりよい解決策が必要であると確信しています。 助けていただければ幸いです。
それは私がそれをやる方法です。そして、スレッドを手動で終了しなければならないかどうかはわかりませんでした。短く関連した質問: 'Future#get(30、TimeUnit.Seconds)'を使用すると、タイムアウト例外がスローされた後も基本メソッドは実行されますか? – User9123
タイムアウト例外がスローされると、基礎となるメソッド_may_がまだ実行されています。これは、あなたの 'longRunningBusinessMethod'を実行しているスレッドに' interrupted'フラグをセットするだけです。これにより、コードは割り込み可能な方法で書き込まれる必要があります。 –