クラス ResponseBodyEmitter

java.lang.ObjectSE
org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter
既知の直属サブクラス
SseEmitter

public class ResponseBodyEmitter extends ObjectSE
1 つ以上のオブジェクトがレスポンスに書き込まれる非同期リクエスト処理のコントローラーメソッドの戻り値の型。

DeferredResult は単一の結果を生成するために使用されますが、ResponseBodyEmitter は、各オブジェクトが互換性のある HttpMessageConverter で記述されている複数のオブジェクトを送信するために使用できます。

単独で、また ResponseEntity 内で戻り型としてサポートされます。

@RequestMapping(value="/stream", method=RequestMethod.GET)
public ResponseBodyEmitter handle() {
           ResponseBodyEmitter emitter = new ResponseBodyEmitter();
           // Pass the emitter to another component...
           return emitter;
}

// in another thread
emitter.send(foo1);

// and again
emitter.send(foo2);

// and done
emitter.complete();
導入:
4.2
作成者:
Rossen Stoyanchev, Juergen Hoeller, Brian Clozel, Taeik Lim
  • ネストされたクラスの要約

    ネストされたクラス
    修飾子と型
    クラス
    説明
    static class
    書き込むメッセージコンバーターを選択するための MediaType ヒントとともに書き込まれるデータの単純なホルダー。
  • フィールドのサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    protected final LockSE
    レスポンスに対する書き込み操作へのアクセスを保護します。
  • コンストラクターの概要

    コンストラクター
    コンストラクター
    説明
    新しい ResponseBodyEmitter インスタンスを作成します。
    カスタムタイムアウト値を使用して ResponseBodyEmitter を作成します。
  • 方法の概要

    修飾子と型
    メソッド
    説明
    void
    サーブレットコンテナーへのディスパッチを実行してリクエスト処理を完了します。Spring MVC がもう一度呼び出され、リクエスト処理のライフサイクルが完了します。
    void
    エラーでリクエスト処理を完了します。
    protected void
    ResponseBodyEmitter が ResponseEntity でラップされている場合、ステータスコードとヘッダーでレスポンスが更新された後で、レスポンスがコミットされる前に呼び出されます。
    設定されているタイムアウト値があれば、それを返します。
    void
    非同期リクエストが完了したときに呼び出すコードを登録します。
    void
    非同期リクエストの処理中にエラーを呼び出すコードを登録します。
    void
    非同期リクエストがタイムアウトしたときに呼び出すコードを登録します。
    void
    send(ObjectSE object)
    指定されたオブジェクトをレスポンスに書き込みます。
    void
    send(ObjectSE object, @Nullable MediaType mediaType)
    send(Object) のオーバーロードされたバリアントで、指定されたオブジェクトを直列化する方法の MediaType ヒントも受け入れます。
    void
    一連のデータと MediaType ペアをバッチで書き込みます。

    クラス ObjectSE から継承されたメソッド

    clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, wait, waitSE, waitSE
  • フィールドの詳細

    • writeLock

      protected final LockSE writeLock
      レスポンスに対する書き込み操作へのアクセスを保護します。
  • コンストラクターの詳細

    • ResponseBodyEmitter

      public ResponseBodyEmitter()
      新しい ResponseBodyEmitter インスタンスを作成します。
    • ResponseBodyEmitter

      public ResponseBodyEmitter(LongSE timeout)
      カスタムタイムアウト値を使用して ResponseBodyEmitter を作成します。

      デフォルトでは設定されていません。この場合、MVC Java Config または MVC 名前空間で設定されたデフォルトが使用されます。または、設定されていない場合、タイムアウトは基盤となるサーバーのデフォルトによって異なります。

      パラメーター:
      timeout - ミリ秒単位のタイムアウト値
  • メソッドの詳細

    • getTimeout

      public @Nullable LongSE getTimeout()
      設定されているタイムアウト値があれば、それを返します。
    • extendResponse

      protected void extendResponse(ServerHttpResponse outputMessage)
      ResponseBodyEmitter が ResponseEntity でラップされている場合、ステータスコードとヘッダーでレスポンスが更新された後で、レスポンスがコミットされる前、つまりレスポンスの本文が書き込まれる前に呼び出されます。

      デフォルトの実装は空です。

    • send

      public void send(ObjectSE object) throws IOExceptionSE
      指定されたオブジェクトをレスポンスに書き込みます。

      例外が発生した場合、Spring MVC が例外処理メカニズムを介して例外を渡すアプリサーバーにディスパッチが戻されます。

      注意 : 送信が IOException で失敗した場合、クリーンアップするために completeWithError(Throwable) を呼び出す必要はありません。代わりに、サーブレットコンテナーは、Spring MVC が例外リゾルバーを呼び出して処理を完了するディスパッチをもたらす通知を作成します。

      パラメーター:
      object - 書き込むオブジェクト
      例外:
      IOExceptionSE - I/O エラーが発生したときに発生します
      IllegalStateExceptionSE - 他のエラーをラップします
    • send

      public void send(ObjectSE object, @Nullable MediaType mediaType) throws IOExceptionSE
      send(Object) のオーバーロードされたバリアントで、指定されたオブジェクトを直列化する方法の MediaType ヒントも受け入れます。
      パラメーター:
      object - 書き込むオブジェクト
      mediaType - HttpMessageConverter を選択するための MediaType ヒント
      例外:
      IOExceptionSE - I/O エラーが発生したときに発生します
      IllegalStateExceptionSE - 他のエラーをラップします
    • send

      public void send(SetSE<ResponseBodyEmitter.DataWithMediaType> items) throws IOExceptionSE
      一連のデータと MediaType ペアをバッチで書き込みます。

      send(Object, MediaType) と比較すると、これは書き込み操作をバッチ化し、最後にネットワークにフラッシュします。

      パラメーター:
      items - 書き込むオブジェクトとメディア型のペア
      例外:
      IOExceptionSE - I/O エラーが発生したときに発生します
      IllegalStateExceptionSE - 他のエラーをラップします
      導入:
      6.0.12
    • complete

      public void complete()
      サーブレットコンテナーへのディスパッチを実行してリクエスト処理を完了します。Spring MVC がもう一度呼び出され、リクエスト処理のライフサイクルが完了します。

      注意 : このメソッドは、リクエスト処理を完了するためにアプリケーションによって呼び出される必要があります。sending 中のエラーなど、コンテナー関連のイベントの後に使用しないでください。

    • completeWithError

      public void completeWithError(ThrowableSE ex)
      エラーでリクエスト処理を完了します。

      Spring MVC が例外処理メカニズムを介して例外を渡すアプリサーバーにディスパッチが行われます。ただし、リクエスト処理のこの段階では、レスポンスがコミットされ、レスポンスステータスを変更できなくなることに注意してください。

      注意 : アプリケーションがこのメソッドを呼び出して、リクエスト処理をエラーで完了する必要があります。sending 中のエラーなど、コンテナー関連のイベントの後に使用しないでください。

    • onTimeout

      public void onTimeout(RunnableSE callback)
      非同期リクエストがタイムアウトしたときに呼び出すコードを登録します。このメソッドは、非同期リクエストがタイムアウトしたときにコンテナースレッドから呼び出されます。

      6.2 以降では、このイベントに対して複数のコールバックを登録できます。

    • onError

      public void onError(ConsumerSE<ThrowableSE> callback)
      非同期リクエストの処理中にエラーが発生した場合に呼び出すコードを登録します。このメソッドは、非同期リクエストの処理中にエラーが発生したときにコンテナースレッドから呼び出されます。

      6.2 以降では、このイベントに対して複数のコールバックを登録できます。

      導入:
      5.0
    • onCompletion

      public void onCompletion(RunnableSE callback)
      非同期リクエストが完了したときに呼び出すコードを登録します。このメソッドは、タイムアウトやネットワークエラーなどの何らかの理由で非同期リクエストが完了したときに、コンテナースレッドから呼び出されます。このメソッドは、ResponseBodyEmitter インスタンスが使用できなくなったことを検出できます。

      6.2 以降では、このイベントに対して複数のコールバックを登録できます。

    • toString

      public StringSE toString()
      オーバーライド:
      クラス ObjectSEtoString