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