パッケージ jakarta.ws.rs.container
インターフェース TimeoutHandler
public interface TimeoutHandler
非同期レスポンスサスペンドタイムアウトハンドラー。JAX-RS ユーザーは、このコールバックインターフェースを利用して、タイムアウトイベントのカスタム解決を提供できます。デフォルトでは、JAX-RS ランタイムは
HTTP 503 (Service unavailable)
エラーレスポンスステータスコードを使用してWebApplicationException
を生成します。カスタムタイムアウトハンドラーは、非同期レスポンスインスタンスのset
であり、カスタムタイムアウトイベントの解決を提供します。一時停止タイムアウトイベントの場合、カスタムタイムアウトハンドラーは通常、次のいずれかのアクションを実行します。
custom response
またはcustom exception
を使用して中断された非同期レスポンスを再開しますAsyncResponse
cancel(...)
メソッドの 1 つを呼び出して、レスポンスをキャンセルします。setting a new suspend time-out
によるレスポンスの一時停止期間を延長します
登録されたタイムアウトハンドラーが上記のアクションを実行しない場合、デフォルトのタイムアウトイベント処理が続行され、HTTP503 ステータスコードを含む生成された
WebApplicationException
でレスポンスが再開されます。次の例は、カスタム
TimeoutHandler
の使用箇所を示しています。public class MyTimeoutHandler implements TimeoutHandler { … public void handleTimeout(AsyncResponse ar) { if (keepSuspended) { ar.setTimeout(10, SECONDS); } else if (cancel) { ar.cancel(retryPeriod); } else { ar.resume(defaultResponse); } } … } @Path("/messages/next") public class MessagingResource { … @GET public void readMessage(@Suspended AsyncResponse ar) { ar.setTimeoutHandler(new MyTimeoutHandler()); suspended.put(ar); } … }
- 導入:
- 2.0
- 作成者:
- Marek Potociar
メソッドのサマリー
すべてのメソッド インスタンスメソッド 抽象メソッド 修飾子と型 メソッド 説明 void
handleTimeout(AsyncResponse asyncResponse)
中断された非同期レスポンスがタイムアウトに近づいたときに呼び出されます。
メソッドの詳細
handleTimeout
void handleTimeout(AsyncResponse asyncResponse)
中断された非同期レスポンスがタイムアウトに近づいたときに呼び出されます。タイムアウトハンドラーを実装するには、コールバックメソッドを使用して、JAX-RS 仕様で定義されているデフォルトのタイムアウト戦略を変更できます(AsyncResponse
API ドキュメントを参照)。カスタムタイムアウトハンドラーは、次のいずれかを決定できます
resume(...)
メソッドの 1 つを使用して、中断されたレスポンスを再開します。cancel(...)
メソッドのいずれかを使用して中断されたレスポンスをキャンセルするかsetting a new suspend time-out
によって一時停止期間を延長します
- パラメーター:
asyncResponse
- タイムアウトしている一時停止された非同期レスポンス。