0

応答サイズをカウントするサーバー フィルターを作成しました。ServletOutputStreamこれは、 Apache Commonsでラップする応答ラッパーを作成することによって行われCountingOutputStreamます。また、ラッパーは、ラップされたストリームで PrintWriter を作成します。したがって、理論的には、実際の出力を作成するために使用されるメソッドは、CountingOutputStream を経由する必要があります。

問題は、一般的なサーブレット リクエストに対してはすべてが機能する一方で、静的コンテンツに対しては失敗することです。正確には、リクエストはフィルタによって取得され、レスポンス ラッパーが作成されてchain.doFilter()呼び出されます。ただし、返されると、ラップされたストリームはデータが送信されなかったと主張しますが、実際にはデータは送信されました。さらにデバッグすると、静的コンテンツの提供中に応答ラッパーで呼び出されgetOutputStream()たり呼び出されたりしないようです。getWriter()

フィルターとアプリはJetty 8.1.xで実行されています。Jetty のデフォルトのサーブレットにざっと目を通してみたところ、静的コンテンツは通常の方法 (つまり、出力ストリームを取得して書き込み) で提供されているようです。

問題は、なぜラッパー メソッドが無視されているのかということです。

4

2 に答える 2

0

すべてのキャッシュ メカニズムを無効にしてもよろしいですか?

于 2014-07-17T15:02:16.433 に答える