私は、さまざまなソリューションを実装して試してみる前に、より広い入力をしたいというシナリオがあります。ストリーミングネストされたストリームのレスポンス
私が実装しているRESTサービスは、バイナリデータのいくつかのフィールドと単純な文字列を含むモデルを提供します。簡単な方法は、String、byte []フィールドなどを含むPOJOSを実装することです。ジャクソンはbase64を使用してそれをシリアル化します。ケーキの一片。
しかし、これをストリームとしてサービスしたいと思います。バイナリフィールドは非常に大きく、私のサービス内の別の外部リソースから入ってくるストリームとしてすでに処理されています。したがって、それらをバイト配列に読み込んだり、jacksonにそれらをbase64に変換させると、許容できないパフォーマンスヒットが発生します。
多分私はPOJO内にOutputStreamオブジェクトを持つことができます。それはJacksonが(base64にエンコードしている間に)ストリームを作りますか、それとも最初にストリーム全体を読み込むのでしょうか?おそらくジャクソンはこれをまったくサポートしないでしょうか?
もう1つの選択肢は、複数の部分からなる回答を使用している可能性がありますが、ジャージーもそれをすべてバッファリングしないことは確実ですか?
それを行う唯一の方法は、何らかの種類のカスタムジャクソンシリアライザを使用することですか? これを実行するためにStreamingOutputを使用できますか?
私は単純にそれをオクテットストリームとして返してうれしいですが、言及したように私はいくつかのバイナリフィールドと非バイナリフィールドを持つデータモデルを持っています。 1回の呼び出しで
あなたはどう言いますか?私の目的を達成する最も簡単な方法は何ですか?