パッケージ jakarta.ws.rs.ext

インターフェース MessageBodyWriter<T>

  • 型パラメーター:
    T - 書き込み可能な型。

    public interface MessageBodyWriter<T>
    Java 型からストリームへの変換をサポートするプロバイダーの契約。MessageBodyWriter 実装には、適切と見なされるメディア型を制限するために、Produces のアノテーションを付けることができます。MessageBodyWriter パイプラインは、null 以外のレスポンスエンティティがある場合にのみ呼び出されます。

    MessageBodyWriter 契約を実装するプロバイダーは、プログラムで JAX-RS ランタイムに登録するか、プロバイダーのスキャンフェーズ中に JAX-RS ランタイムによって自動的に検出されるように @Provider アノテーションを付ける必要があります。

    導入:
    1.0
    作成者:
    Paul Sandoz, Marc Hadley
    関連事項:
    Provider, Produces
    • メソッドの詳細

      • 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 の長さ(バイト単位)を確認していました。HTTP Content-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 エンティティの OutputStreamSE。実装は出力ストリームを閉じてはなりません。
        例外:
        IOExceptionSE - IO エラーが発生した場合。
        WebApplicationException - 特定の HTTP エラーレスポンスを生成する必要がある場合。メッセージがコミットされる前にスローされた場合にのみ有効です。