パッケージ jakarta.ws.rs.container
アノテーション型 Suspended
@TargetSE(PARAMETERSE) @RetentionSE(RUNTIMESE) @DocumentedSE public @interface Suspended
中断されたAsyncResponse
を、呼び出された JAX-RSresource or sub-resource method
のパラメーターに挿入します。挿入されたAsyncResponse
インスタンスは、アクティブなリクエストの処理にバインドされ、レスポンスが利用可能になったときにリクエストの処理を再開するために使用できます。デフォルトでは
no suspend timeout set
があり、非同期レスポンスは無期限に中断されます。一時停止タイムアウトとカスタムtimeout handler
は、AsyncResponse.setTimeout(long, TimeUnit)
およびAsyncResponse.setTimeoutHandler(TimeoutHandler)
メソッドを使用してプログラムで指定できます。例:@Stateless @Path("/") public class MyEjbResource { … @GET @Asynchronous public void longRunningOperation(@Suspended AsyncResponse ar) { ar.setTimeoutHandler(customHandler); ar.setTimeout(10, TimeUnit.SECONDS); final String result = executeLongRunningOperation(); ar.resume(result); } private String executeLongRunningOperation() { … } }
@Suspended
アノテーションを使用してAsyncResponse
の中断されたインスタンスを注入するリソースまたはサブリソースメソッドは、void
型を返すように宣言されることが期待されます。@Suspended
アノテーションを使用して非同期レスポンスインスタンスを注入し、void
以外の戻り値の型を宣言するメソッドは、JAX-RS ランタイムによって検出されなければならず、警告メッセージがログに記録されなければなりません。そのようなリソースまたはサブリソースメソッドから返されるレスポンス値は、フレームワークによって無視されなければなりません。@Path("/messages/next") public class MessagingResource { … @GET public String readMessage(@Suspended AsyncResponse ar) { suspended.put(ar); return "This response will be ignored."; } … }
- 導入:
- 2.0
- 作成者:
- Marek Potociar