T - 結果の型 public class DeferredResult<T>
extends java.lang.ObjectDeferredResult は、非同期リクエスト処理に Callable を使用する代わりの方法を提供します。Callable はアプリケーションに代わって同時に実行されますが、DeferredResult を使用すると、アプリケーションは選択したスレッドから結果を生成できます。 サブクラスはこのクラスを継承して、追加のデータまたは動作を DeferredResult に簡単に関連付けることができます。例: DeferredResult の作成に使用されるユーザーを、クラスを継承し、ユーザーの追加のプロパティを追加することで関連付けることができます。このようにして、マッピングを行うためにデータ構造を使用する必要なく、ユーザーは後で簡単にアクセスできます。
このクラスに追加の動作を関連付ける例は、クラスを継承して追加のインターフェースを実装することで実現できます。例: DeferredResult が PriorityQueue に追加されたときに正しい順序で処理されるように、Comparable を実装したい場合があります。
| 修飾子と型 | クラスと説明 |
|---|---|
static interface | DeferredResult.DeferredResultHandler 設定されている場合、DeferredResult 値を処理します。 |
| コンストラクターと説明 |
|---|
DeferredResult()DeferredResult を作成します。 |
DeferredResult(java.lang.Long timeout) カスタムタイムアウト値を使用して DeferredResult を作成します。 |
DeferredResult(java.lang.Long timeout, java.lang.Object timeoutResult) タイムアウト値とタイムアウトの場合に使用するデフォルトの結果で DeferredResult を作成します。 |
DeferredResult(java.lang.Long timeout, java.util.function.Supplier<?> timeoutResult)Supplier に基づく動的フォールバック値を受け入れる DeferredResult(Long, Object) のバリアント。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
java.lang.Object | getResult() 結果を返します。結果が設定されていない場合は null を返します。 |
boolean | hasResult()DeferredResult が設定されている場合は true を返します。 |
boolean | isSetOrExpired() この DeferredResult が以前に設定されたか、基になるリクエストが期限切れになったために使用できなくなった場合は、 true を返します。 |
void | onCompletion(java.lang.Runnable callback) 非同期リクエストが完了したときに呼び出すコードを登録します。 |
void | onError(java.util.function.Consumer<java.lang.Throwable> callback) 非同期リクエスト中にエラーが発生したときに呼び出すコードを登録します。 |
void | onTimeout(java.lang.Runnable callback) 非同期リクエストがタイムアウトしたときに呼び出すコードを登録します。 |
boolean | setErrorResult(java.lang.Object result)DeferredResult のエラー値を設定して処理します。 |
boolean | setResult(T result)DeferredResult の値を設定して処理します。 |
void | setResultHandler(DeferredResult.DeferredResultHandler resultHandler) 結果値を処理するために使用するハンドラーを提供します。 |
public DeferredResult()
public DeferredResult(java.lang.Long timeout)
デフォルトでは設定されていません。この場合、MVC Java Config または MVC 名前空間で設定されたデフォルトが使用されます。または、設定されていない場合、タイムアウトは基盤となるサーバーのデフォルトによって異なります。
timeout - ミリ秒単位のタイムアウト値 public DeferredResult(@Nullable java.lang.Long timeout, java.lang.Object timeoutResult)
timeout - ミリ秒単位のタイムアウト値 (null の場合は無視されます)timeoutResult - 使用する結果 public DeferredResult(@Nullable java.lang.Long timeout, java.util.function.Supplier<?> timeoutResult)
Supplier に基づく動的フォールバック値を受け入れる DeferredResult(Long, Object) のバリアント。timeout - ミリ秒単位のタイムアウト値 (null の場合は無視されます)timeoutResult - 使用する結果サプライヤー public final boolean isSetOrExpired()
true を返します。 結果は、setResult(Object) または setErrorResult(Object) の呼び出しで設定されたか、タイムアウト結果がコンストラクターに提供された場合はタイムアウトの結果として設定された可能性があります。リクエストは、タイムアウトまたはネットワークエラーが原因で期限切れになる場合もあります。
public boolean hasResult()
true を返します。@Nullable public java.lang.Object getResult()
null を返します。結果も null になる可能性があるため、このメソッドを呼び出す前に、まず hasResult() を使用して結果があるかどうかを確認することをお勧めします。public void onTimeout(java.lang.Runnable callback)
このメソッドは、DeferredResult が入力される前に非同期リクエストがタイムアウトしたときに、コンテナースレッドから呼び出されます。setResult または setErrorResult を呼び出して処理を再開する場合があります。
public void onError(java.util.function.Consumer<java.lang.Throwable> callback)
このメソッドは、DeferredResult が入力される前の非同期リクエストの処理中にエラーが発生したときに、コンテナースレッドから呼び出されます。setResult または setErrorResult を呼び出して処理を再開する場合があります。
public void onCompletion(java.lang.Runnable callback)
このメソッドは、タイムアウトやネットワークエラーなどの何らかの理由で非同期リクエストが完了したときに、コンテナースレッドから呼び出されます。これは、DeferredResult インスタンスが使用できなくなったことを検出できます。
public final void setResultHandler(DeferredResult.DeferredResultHandler resultHandler)
resultHandler - ハンドラー DeferredResultProcessingInterceptorpublic boolean setResult(T result)
result - 設定する値 true。false (結果がすでに設定されている場合、または非同期リクエストが期限切れの場合)isSetOrExpired()public boolean setErrorResult(java.lang.Object result)
result - エラー結果値 true 結果がエラー値に設定され、処理のために渡された場合。false (結果がすでに設定されている場合、または非同期リクエストが期限切れの場合)isSetOrExpired()