1

顧客のアプリケーションをTomcat6に移行しています。テスト中に、一部のクライアントは応答が常にチャンク化されることを期待していることを発見しました。つまり、Transfer-encoding:chunkedです。ただし、Tomcatは常にチャンクエンコーディングを使用するわけではなく、代わりにContent-Lengthを使用することもあります。これは、応答サイズが十分に小さいため、ヘッダーが送信されたときに全長がわかるためだと思います。

チャンクエンコーディングを無効にする方法についてたくさんの質問/回答を見てきましたが、反対の問題があります。すべての応答でチャンクエンコーディングを強制することは理想的ではなく、クライアントはhttp1.1仕様と完全に互換性があり、どちらのエンコーディングも受け入れる必要があることを知っていますが、簡単な構成があるかどうかを調べようとしています。目的の動作を有効にするために実行します。

私はTomcatのみと標準のhttpコネクタを使用しています。私はコネクタの属性を調べて、bufferSizeとsocketBufferを試してみましたが運がありませんでした。

チャンク応答を強制するためにできることはありますか?

4

1 に答える 1

3

他の誰かがこれに遭遇した場合に備えて、私はハッキーな解決策を見つけました。何かを書き込む前に、すぐに出力ストリームをフラッシュします。これにより、Tomcatはすぐに応答ヘッダーを送信し、チャンクエンコーディングを使用するようになります。それは、処理を完了する前にすぐに200のステータスコードを送信することを意味するので、それが不十分であることを知っていますが、それがチャンクエンコーディングを強制するために見つけることができる唯一の方法です。

于 2013-03-13T16:34:44.293 に答える