@TargetSE(valueSE=PARAMETERSE) @RetentionSE(valueSE=RUNTIMESE) @DocumentedSE public @interface Suspended
AsyncResponse
を、呼び出された JAX-RS resource 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."; } … }
Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.