クラス ResponseBodyEmitter
- 既知の直属サブクラス
SseEmitter
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
ネストされたクラスのサマリー
修飾子と型クラス説明static class
書き込むメッセージコンバーターを選択するための MediaType ヒントとともに書き込まれるデータの単純なホルダー。コンストラクターのサマリー
コンストラクター説明新しい ResponseBodyEmitter インスタンスを作成します。ResponseBodyEmitter
(LongSE timeout) カスタムタイムアウト値を使用して ResponseBodyEmitter を作成します。メソッドのサマリー
修飾子と型メソッド説明void
complete()
サーブレットコンテナーへのディスパッチを実行してリクエスト処理を完了します。Spring MVC がもう一度呼び出され、リクエスト処理のライフサイクルが完了します。void
エラーでリクエスト処理を完了します。protected void
extendResponse
(ServerHttpResponse outputMessage) ResponseBodyEmitter が ResponseEntity でラップされている場合、ステータスコードとヘッダーでレスポンスが更新された後で、レスポンスがコミットされる前に呼び出されます。設定されているタイムアウト値があれば、それを返します。void
onCompletion
(RunnableSE callback) 非同期リクエストが完了したときに呼び出すコードを登録します。void
onError
(ConsumerSE<ThrowableSE> callback) 非同期リクエストの処理中にエラーを呼び出すコードを登録します。void
onTimeout
(RunnableSE callback) 非同期リクエストがタイムアウトしたときに呼び出すコードを登録します。void
指定されたオブジェクトをレスポンスに書き込みます。void
send(Object)
のオーバーロードされたバリアントで、指定されたオブジェクトを直列化する方法の MediaType ヒントも受け入れます。void
一連のデータと MediaType ペアをバッチで書き込みます。toString()
コンストラクターの詳細
ResponseBodyEmitter
public ResponseBodyEmitter()新しい ResponseBodyEmitter インスタンスを作成します。ResponseBodyEmitter
カスタムタイムアウト値を使用して ResponseBodyEmitter を作成します。デフォルトでは設定されていません。この場合、MVC Java Config または MVC 名前空間で設定されたデフォルトが使用されます。または、設定されていない場合、タイムアウトは基盤となるサーバーのデフォルトによって異なります。
- パラメーター:
timeout
- ミリ秒単位のタイムアウト値
メソッドの詳細
getTimeout
設定されているタイムアウト値があれば、それを返します。extendResponse
ResponseBodyEmitter が ResponseEntity でラップされている場合、ステータスコードとヘッダーでレスポンスが更新された後で、レスポンスがコミットされる前、つまりレスポンスの本文が書き込まれる前に呼び出されます。デフォルトの実装は空です。
send
指定されたオブジェクトをレスポンスに書き込みます。例外が発生した場合、Spring MVC が例外処理メカニズムを介して例外を渡すアプリサーバーにディスパッチが戻されます。
注意 : 送信が IOException で失敗した場合、クリーンアップするために
completeWithError(Throwable)
を呼び出す必要はありません。代わりに、サーブレットコンテナーは、Spring MVC が例外リゾルバーを呼び出して処理を完了するディスパッチをもたらす通知を作成します。- パラメーター:
object
- 書き込むオブジェクト- 例外:
IOExceptionSE
- I/O エラーが発生したときに発生しますIllegalStateExceptionSE
- 他のエラーをラップします
send
send(Object)
のオーバーロードされたバリアントで、指定されたオブジェクトを直列化する方法の MediaType ヒントも受け入れます。- パラメーター:
object
- 書き込むオブジェクトmediaType
- HttpMessageConverter を選択するための MediaType ヒント- 例外:
IOExceptionSE
- I/O エラーが発生したときに発生しますIllegalStateExceptionSE
- 他のエラーをラップします
send
一連のデータと MediaType ペアをバッチで書き込みます。send(Object, MediaType)
と比較すると、これは書き込み操作をバッチ化し、最後にネットワークにフラッシュします。- パラメーター:
items
- 書き込むオブジェクトとメディア型のペア- 例外:
IOExceptionSE
- I/O エラーが発生したときに発生しますIllegalStateExceptionSE
- 他のエラーをラップします- 導入:
- 6.0.12
complete
public void complete()サーブレットコンテナーへのディスパッチを実行してリクエスト処理を完了します。Spring MVC がもう一度呼び出され、リクエスト処理のライフサイクルが完了します。注意 : このメソッドは、リクエスト処理を完了するためにアプリケーションによって呼び出される必要があります。
sending
中のエラーなど、コンテナー関連のイベントの後に使用しないでください。completeWithError
エラーでリクエスト処理を完了します。Spring MVC が例外処理メカニズムを介して例外を渡すアプリサーバーにディスパッチが行われます。ただし、リクエスト処理のこの段階では、レスポンスがコミットされ、レスポンスステータスを変更できなくなることに注意してください。
注意 : アプリケーションがこのメソッドを呼び出して、リクエスト処理をエラーで完了する必要があります。
sending
中のエラーなど、コンテナー関連のイベントの後に使用しないでください。onTimeout
非同期リクエストがタイムアウトしたときに呼び出すコードを登録します。このメソッドは、非同期リクエストがタイムアウトしたときにコンテナースレッドから呼び出されます。onError
非同期リクエストの処理中にエラーが発生した場合に呼び出すコードを登録します。このメソッドは、非同期リクエストの処理中にエラーが発生したときにコンテナースレッドから呼び出されます。- 導入:
- 5.0
onCompletion
非同期リクエストが完了したときに呼び出すコードを登録します。このメソッドは、タイムアウトやネットワークエラーなどの何らかの理由で非同期リクエストが完了したときに、コンテナースレッドから呼び出されます。このメソッドは、ResponseBodyEmitter
インスタンスが使用できなくなったことを検出できます。toString