パッケージ jakarta.ws.rs.ext
インターフェース MessageBodyWriter<T>
- 型パラメーター:
T
- 書き込み可能な型。
public interface MessageBodyWriter<T>
Java 型からストリームへの変換をサポートするプロバイダーの契約。MessageBodyWriter
実装には、適切と見なされるメディア型を制限するために、Produces
のアノテーションを付けることができます。MessageBodyWriter
パイプラインは、null 以外のレスポンスエンティティがある場合にのみ呼び出されます。MessageBodyWriter
契約を実装するプロバイダーは、プログラムで JAX-RS ランタイムに登録するか、プロバイダーのスキャンフェーズ中に JAX-RS ランタイムによって自動的に検出されるように@Provider
アノテーションを付ける必要があります。
メソッドのサマリー
すべてのメソッド インスタンスメソッド 抽象メソッド デフォルトメソッド 修飾子と型 メソッド 説明 default long
getSize(T t, ClassSE<?> type, TypeSE genericType, AnnotationSE[] annotations, MediaType mediaType)
元々、このメソッドはwriteTo
の前に呼び出され、シリアライズされた形式のt
の長さ(バイト単位)を確認していました。boolean
isWriteable(ClassSE<?> type, TypeSE genericType, AnnotationSE[] annotations, MediaType mediaType)
MessageBodyWriter が特定の型をサポートしているかどうかを確認します。void
writeTo(T t, ClassSE<?> type, TypeSE genericType, AnnotationSE[] annotations, MediaType mediaType, MultivaluedMap<StringSE,ObjectSE> httpHeaders, OutputStreamSE entityStream)
型を HTTP メッセージに書き込みます。
メソッドの詳細
isWriteable
boolean isWriteable(ClassSE<?> type, TypeSE genericType, AnnotationSE[] annotations, MediaType mediaType)
MessageBodyWriter が特定の型をサポートしているかどうかを確認します。- パラメーター:
type
- 書き込まれるインスタンスのクラス。genericType
- 書き込まれるインスタンスの型。リソースメソッドの戻り値の型を反映するか、返されたインスタンスのインスペクションを介して取得されます。GenericEntity
は、実行時にこの情報を指定する方法を提供します。annotations
- メッセージエンティティインスタンスに添付されたアノテーションの配列。mediaType
- HTTP エンティティのメディア型。- 戻り値:
- 型がサポートされている場合は
true
、それ以外の場合はfalse
。
getSize
default long getSize(T t, ClassSE<?> type, TypeSE genericType, AnnotationSE[] annotations, MediaType mediaType)
元々、このメソッドはwriteTo
の前に呼び出され、シリアライズされた形式のt
の長さ(バイト単位)を確認していました。HTTPContent-Length
ヘッダーで負でない戻り値が使用されています。JAX-RS 2.0 の時点で、メソッドは非推奨になり、メソッドによって返される値は JAX-RS ランタイムによって無視されます。すべての
MessageBodyWriter
実装は、メソッドから-1
を返すことをお勧めします。実際のContent-Length
ヘッダー値を計算する責任は、JAX-RS ランタイムに委譲されています。- パラメーター:
t
- 書き込むインスタンスtype
- 書き込まれるインスタンスのクラス。genericType
- 書き込むインスタンスの型。GenericEntity
は、実行時にこの情報を指定する方法を提供します。annotations
- メッセージエンティティインスタンスに添付されたアノテーションの配列。mediaType
- HTTP エンティティのメディア型。- 戻り値:
- バイト単位の長さ、または長さが事前に決定できない場合は -1。
writeTo
void writeTo(T t, ClassSE<?> type, TypeSE genericType, AnnotationSE[] annotations, MediaType mediaType, MultivaluedMap<StringSE,ObjectSE> httpHeaders, OutputStreamSE entityStream) throws IOExceptionSE, WebApplicationException
型を HTTP メッセージに書き込みます。メッセージヘッダーマップは変更可能ですが、ヘッダーはメッセージ本文を書き込む前にフラッシュされるため、出力ストリームに書き込む前に変更を行う必要があります。- パラメーター:
t
- 書き込むインスタンス。type
- 書き込まれるインスタンスのクラス。genericType
- 書き込むインスタンスの型。GenericEntity
は、実行時にこの情報を指定する方法を提供します。annotations
- メッセージエンティティインスタンスに添付されたアノテーションの配列。mediaType
- HTTP エンティティのメディア型。httpHeaders
- HTTP メッセージヘッダーの変更可能なマップ。entityStream
- HTTP エンティティのOutputStream
SE。実装は出力ストリームを閉じてはなりません。- 例外:
IOExceptionSE
- IO エラーが発生した場合。WebApplicationException
- 特定の HTTP エラーレスポンスを生成する必要がある場合。メッセージがコミットされる前にスローされた場合にのみ有効です。