计算输入和输出流量

时间:2013-06-10 14:57:59

标签: java servlets traffic

有人可以帮助我了解如何计算流量(进/出)。

我有app获取API请求,每个请求都存储在DB中以进行统计。我需要每个请求和响应的存储流量大小。

HttpServletRequest 我可以很容易地获得请求的大小但是我的响应大小如何?

还使用 ProceedingJoinPoint

1 个答案:

答案 0 :(得分:0)

您可以通过包装OutputStream中使用的HttpServletResponse来计算写入的字节数(通过包装响应)

public class CountingFilter implements Filter {

   public void doFilter(...) {
       chain.doFilter(request, new SizeCountingHttpServletResponse(response));
   }

   public static class SizeCountingHttpServletResponse extends HttpServletResponseWrapper {

      ....
      @Override
      public OutputStream getOutputStream() {
          return new CountingOutputStream(super.getOutputStream());
      }
      // same with getWriter()..
   }

   public static class CountingOuputStream extends OutputStream {
       private int size;
       // delegate all methods to the original OutputStream
       // count the number of byte written and store in the 'size' field.
   }

}