public interface TimeoutHandler デフォルトでは、ランタイムは HTTP 503 (Service unavailable) エラーレスポンスステータスコードを使用して WebApplicationException を生成します。カスタムタイムアウトハンドラーは、非同期レスポンスインスタンスの set であり、カスタムタイムアウトイベントの解決を提供します。
一時停止タイムアウトイベントの場合、カスタムタイムアウトハンドラーは通常、次のいずれかのアクションを実行します。
custom response または custom exception を使用して中断された非同期レスポンスを再開します AsyncResponse cancel(...) メソッドの 1 つを呼び出して、レスポンスをキャンセルします。setting a new suspend time-out によるレスポンスの一時停止期間を延長します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);
}
…
}
| 修飾子と型 | メソッドと説明 |
|---|---|
void | handleTimeout(AsyncResponse asyncResponse) 中断された非同期レスポンスがタイムアウトに近づいたときに呼び出されます。 |
void handleTimeout(AsyncResponse asyncResponse)
AsyncResponse API ドキュメントを参照)。カスタムタイムアウトハンドラーは、次のいずれかを決定できます
resume(...) メソッドの 1 つを使用して、中断されたレスポンスを再開します。cancel(...) メソッドのいずれかを使用して中断されたレスポンスをキャンセルするか setting a new suspend time-out によって一時停止期間を延長しますasyncResponse - タイムアウトしている一時停止された非同期レスポンス。Copyright © 2019 Eclipse Foundation.
Use is subject to license terms.