1
2
3
4
5
6
7
8
9
10
11
12
13
14 package ch.qos.logback.access.servlet;
15
16 import java.io.IOException;
17
18 import javax.servlet.Filter;
19 import javax.servlet.FilterChain;
20 import javax.servlet.FilterConfig;
21 import javax.servlet.ServletException;
22 import javax.servlet.ServletRequest;
23 import javax.servlet.ServletResponse;
24 import javax.servlet.http.HttpServletRequest;
25 import javax.servlet.http.HttpServletResponse;
26
27 import ch.qos.logback.access.AccessConstants;
28
29 public class TeeFilter implements Filter {
30
31 public void destroy() {
32
33 }
34
35 public void doFilter(ServletRequest request, ServletResponse response,
36 FilterChain filterChain) throws IOException, ServletException {
37
38 if (request instanceof HttpServletRequest) {
39 try {
40 TeeHttpServletRequest teeRequest = new TeeHttpServletRequest(
41 (HttpServletRequest) request);
42 TeeHttpServletResponse teeResponse = new TeeHttpServletResponse(
43 (HttpServletResponse) response);
44
45
46 filterChain.doFilter(teeRequest, teeResponse);
47
48
49 teeResponse.finish();
50
51
52 teeRequest.setAttribute(AccessConstants.LB_OUTPUT_BUFFER, teeResponse
53 .getOutputBuffer());
54 } catch (IOException e) {
55 e.printStackTrace();
56 throw e;
57 } catch (ServletException e) {
58 e.printStackTrace();
59 throw e;
60 }
61 } else {
62 filterChain.doFilter(request, response);
63 }
64
65 }
66
67 public void init(FilterConfig arg0) throws ServletException {
68
69 }
70
71 }