Mercurial > dive4elements > river
comparison flys-client/src/main/java/de/intevation/flys/client/server/ProxyServlet.java @ 3498:92239b53823f
ProxyServlet: Use block instead of byte wise copy.
flys-client/trunk@5222 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 16 Aug 2012 16:38:21 +0000 |
parents | 88feb3347aa5 |
children |
comparison
equal
deleted
inserted
replaced
3497:88feb3347aa5 | 3498:92239b53823f |
---|---|
1 package de.intevation.flys.client.server; | 1 package de.intevation.flys.client.server; |
2 | 2 |
3 import java.io.BufferedInputStream; | |
4 import java.io.InputStream; | 3 import java.io.InputStream; |
5 import java.io.IOException; | 4 import java.io.IOException; |
6 import java.io.OutputStream; | 5 import java.io.OutputStream; |
7 import java.util.Enumeration; | 6 import java.util.Enumeration; |
8 | 7 |
41 @Override | 40 @Override |
42 public void doPost(HttpServletRequest req, HttpServletResponse resp) { | 41 public void doPost(HttpServletRequest req, HttpServletResponse resp) { |
43 } | 42 } |
44 | 43 |
45 @Override | 44 @Override |
46 public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { | 45 public void doGet(HttpServletRequest req, HttpServletResponse resp) |
46 throws IOException { | |
47 HttpClient httpclient = new DefaultHttpClient(); | 47 HttpClient httpclient = new DefaultHttpClient(); |
48 | 48 |
49 String requesturi = req.getRequestURI(); | 49 String requesturi = req.getRequestURI(); |
50 String query = req.getQueryString(); | 50 String query = req.getQueryString(); |
51 | 51 |
52 HttpGet httpget = new HttpGet(this.remoteurl + "?" + query); | 52 HttpGet httpget = new HttpGet(this.remoteurl + "?" + query); |
53 | 53 |
54 boolean debug = logger.isDebugEnabled(); | |
55 | |
54 for (Enumeration e = req.getHeaderNames(); e.hasMoreElements();) { | 56 for (Enumeration e = req.getHeaderNames(); e.hasMoreElements();) { |
55 String name = (String)e.nextElement(); | 57 String name = (String)e.nextElement(); |
56 for (Enumeration f = req.getHeaders(name); f.hasMoreElements();) { | 58 for (Enumeration f = req.getHeaders(name); f.hasMoreElements();) { |
57 String value = (String)f.nextElement(); | 59 String value = (String)f.nextElement(); |
58 logger.debug("Adding request header " + name + " : " + value); | 60 if (debug) { |
61 logger.debug( | |
62 "Adding request header " + name + " : " + value); | |
63 } | |
59 httpget.addHeader(name, value); | 64 httpget.addHeader(name, value); |
60 } | 65 } |
61 } | 66 } |
62 | 67 |
63 HttpResponse response = httpclient.execute(httpget); | 68 HttpResponse response = httpclient.execute(httpget); |
64 | 69 |
65 StatusLine statusline = response.getStatusLine(); | 70 StatusLine statusline = response.getStatusLine(); |
66 logger.debug("Response statuscode " + statusline.getStatusCode()); | 71 if (debug) { |
72 logger.debug("Response statuscode " + statusline.getStatusCode()); | |
73 } | |
67 resp.setStatus(statusline.getStatusCode()); | 74 resp.setStatus(statusline.getStatusCode()); |
68 | 75 |
69 Header[] headers = response.getAllHeaders(); | 76 Header[] headers = response.getAllHeaders(); |
70 for(Header header : headers) { | 77 for(Header header : headers) { |
71 logger.debug("Adding response header " + header.getName() + " : " + header.getValue()); | 78 if (debug) { |
79 logger.debug( | |
80 "Adding response header " + header.getName() + | |
81 " : " + header.getValue()); | |
82 } | |
72 resp.setHeader(header.getName(), header.getValue()); | 83 resp.setHeader(header.getName(), header.getValue()); |
73 } | 84 } |
74 | 85 |
75 HttpEntity entity = response.getEntity(); | 86 HttpEntity entity = response.getEntity(); |
76 if (entity != null) { | 87 if (entity != null) { |
77 InputStream instream = entity.getContent(); | 88 InputStream instream = entity.getContent(); |
78 BufferedInputStream binstream = new BufferedInputStream(instream); | 89 byte [] buf = new byte[4096]; |
79 try { | 90 try { |
80 OutputStream outstream = resp.getOutputStream(); | 91 OutputStream outstream = resp.getOutputStream(); |
81 int read; | 92 try { |
82 while ( ( read = binstream.read() ) != -1 ) { | 93 int read; |
83 outstream.write(read); | 94 while ((read = instream.read(buf)) >= 0) { |
95 outstream.write(buf, 0, read); | |
96 } | |
97 outstream.flush(); | |
84 } | 98 } |
85 outstream.close(); | 99 finally { |
100 outstream.close(); | |
101 } | |
86 } | 102 } |
87 finally { | 103 finally { |
88 instream.close(); | 104 instream.close(); |
89 } | 105 } |
90 } | 106 } |