- PR -

JSPのファイルサイズ取得

投稿者投稿内容
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-09-19 07:04
引用:

 ログとしてほしいデータは、ユーザ毎の使用データサイズとなり、クライアントからのリクエストのHTTP拡張ヘッダに付加されたユーザのIDを取り出し、そのリクエストに対してのレスポンスのサイズとバインドした形のログを出力したいためAccessLogValveでは、HTTP拡張ヘッダに付加されたユーザのIDを取り出しログにはくことができなかったためあきらめた経緯があります。


せっかくAccessLogValveのソースも公開されていることですし、
APIドキュメントも公開されています。
なので機能が足りないなら、継承して足してやればよいのではないでしょうか。

ざっと見た限り、1100行程度のコードだけなので、
そんなに難しいものでもないかと思われます。
assa
会議室デビュー日: 2005/11/26
投稿数: 19
投稿日時: 2008-09-19 11:44
AccessLogValve継承すれば出来そうな感じがしますが、

HttpServletResponseをProxyクラスで包んで、fowardに渡して、
getOutputSteam と getWriter のときだけラッピングしたSteam返して
通過したバイトサイズを計るとか。。


試してないですけど。。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-09-19 15:26
引用:

HttpServletResponseをProxyクラスで包んで、fowardに渡して、
getOutputSteam と getWriter のときだけラッピングしたSteam返して
通過したバイトサイズを計るとか。。


本質的にはHttpServletResponseWrapperを使うのと同じですね。
それってスレ主さんが拒否していませんでしたっけ。

個人的にも、そのやり方で十分かなと思ったりはします。
バイトサイズではないですが、
特定条件の時だけエンコードの変換というのをやるために、
PrintWriterの取得をフックして独自のものに変更するラッパを作って、
サーブレットフィルタ内で差し替えるというのをやったことはあります。
assa
会議室デビュー日: 2005/11/26
投稿数: 19
投稿日時: 2008-09-19 17:11
引用:

本質的にはHttpServletResponseWrapperを使うのと同じですね。



HttpServletResponseWrapperのjavadoc見てみました。
こんな便利なクラスがあるんですね。
こういう要件に出会ったことが無くて知らなかったですー。

これなら簡単そうですね。

スキルアップ/キャリアアップ(JOB@IT)