検索

2.20. CompletionStage タイプのサポート

download PDF

JAX-RS 2.1 仕様は、@Suspended アノテーションを使用する代わりに CompletionStage を返すことで非同期リソースメソッドの宣言をサポートします。

リソースのメソッドがサブスクライブしている CompletionStage を返すと常に、リクエストは一時停止されます。このリクエストは、 CompletionStage が以下の場合にのみ再開されます。

  • 値に解決され、メソッドの戻り値として処理される。
  • エラーケースとして処理され、例外はリソースメソッドによって発生したかのように処理される。

以下は、CompletionStage を使用した非同期処理の例です。

public class SimpleResource
{

   @GET
   @Path("basic")
   @Produces("text/plain")
   public CompletionStage<Response> getBasic() throws Exception
   {
      final CompletableFuture<Response> response = new CompletableFuture<>();
      Thread t = new Thread()
      {
         @Override
         public void run()
         {
            try
            {
               Response jaxrs = Response.ok("basic").type(MediaType.TEXT_PLAIN).build();
               response.complete(jaxrs);
            }
            catch (Exception e)
            {
               response.completeExceptionally(e);
            }
         }
      };
      t.start();
      return response;
   }
}
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.