1

私は Spring Integration を初めて使用し、データのストリームを返す方法を見つけようとしていますが、例が見つかりません。ByteStreamWritingMessageHandlerに関するドキュメントを見つけましたが、あいまいなようで、使用例 (Bean 定義以外) を提供していません。私がする必要があるのは、ByteStreamWritingMessageHandler を使用するチャネルを定義し、それを受信ゲートウェイで (応答チャネルを介して) 参照することだと思いますが、いくつか質問があります。

まず、私は正しいですか?デフォルトのチャネル タイプを使用できますか? チャネル アダプタは必要ですか? サービス メソッドから ByteArrayOutputStream を返すことはできますか? チャネル定義はどのようになりますか?

どんな助けでも大歓迎です。

- - - - - - - -アップデート - - - - - -

現在のエンドポイントは次のように構成されています。

<int:channel id="httpReplyChannel"/>
<int:channel id="exampleService.exampleMethod"/>
<int-http:inbound-gateway path="/example"
                          supported-methods="POST"
                          request-channel="exampleService.exampleMethod"
                          request-payload-type="java.lang.Integer"
                          reply-channel="httpReplyChannel"
                          message-converters="jsonMessageConverter"
                          mapped-request-headers="*"/>
<int:service-activator input-channel="exampleService.exampleMethod"
                       ref="exampleService"
                       method="exampleMethod"/>

そのため、インバウンド用とアウトバウンド用の 2 つのチャネルを使用し、http:inbound-gateway の reply-channel 属性を使用してアウトバウンド チャネルを構成します。同じパターンに従いたいのですが、新しいアウトバウンド チャネルを作成します。私の問題は、ストリームを返すのに最適なチャネルの種類がわからないことです。エンドポイントは、画像を含むストリームをブラウザーに直接返します (ブラウザーは HTML img タグを介して要求を行います)。そのため、ストリーム (ByteArrayOutputStream) を返すために exampleMethod が必要であり、返される画像の種類に基づいて動的に設定されたヘッダーにアクセスする必要があります。

4

1 に答える 1