Re: [Winstone-devel] Embedding Rewriting Proxy
Status: Beta
Brought to you by:
rickknowles
From: Seng, D. <Dal...@go...> - 2011-04-05 17:44:10
|
Thanks for the encouragement Rick, it paid off! The solution was not to set anything on the request object until after I had grabbed the response output stream and written everything to it (as you suggested, the whole ball 'o wax at once). And one other bugger that took waaaay too long for me to find was that I was pulling the header names off of the request object, looking for "host" and not finding it. So my re-written URL's had 'http://null/...' instead of a host. Once I went to equalsIgnoreCase, I was in business. Thanks for the great tool!! --Dale-- -----Original Message----- From: Rick Knowles [mailto:ri...@kn...] Sent: Tuesday, April 05, 2011 11:07 AM To: Seng, Dale Cc: win...@li... Subject: Re: [Winstone-devel] Embedding Rewriting Proxy First thing I'd recommend doing is setting the response content length. HTTP pipelining behaves far more reliably when it knows how much data is coming. You can do that easily with a few extra lines below, but be sure to set it before calling response.getOutputStream() obviously. Start with that and see how you go. Rick On Tue, 2011-04-05 at 07:47 -0700, Seng, Dale wrote: > Hey Rick, I am impressed with your work on winstone. Thanks for > sharing. > > I got real close, real fast with what I was trying to do, and I > thought I'd just toss the question your way in case something pops > into mind. > > First, my web app is a proxy I run locally so I can re-write URLs > (enables skipping the load balancer). So I publish to a local Tomcat > instance and have my browser pointed there. It works, but I'd like to > make it stand-alone. > > So I ran into your "Embedding Winstone", renamed my war file > 'embedded.war' and was pleased to see it crank-up first time! > > But it doesn't like something I'm doing. Admittedly, my proxy code is > pretty sloppy, and I'm not sure I know what I'm doing (but it does > work with Tomcat). > > I've pasted the whole "doPost" method below. Immediately below is the > console output. I'd gladly zip up my project if this peaks your > interest. > > Thanks, for reading. Hopefully it will be just something dumb I'm > doing in my code. > > --Dale-- > > [OUTPUT] > C:\my\docs\downloads\pxy>java -jar winstone-0.9.10.jar [Winstone > 2011/04/05 09:53:16] - Beginning extraction from war file [Winstone > 2011/04/05 09:53:16] - No webapp lib folder found - C: > \Documents and Settings\dale.seng\Local Settings\Temp\wi(cut and paste > issue here) [Winstone 2011/04/05 09:53:16] - Winstone Servlet Engine > v0.9.10 > running: controlPort=disabled > [Winstone 2011/04/05 09:53:16] - HTTP Listener started: port=8080 > [Winstone 2011/04/05 09:53:16] - AJP13 Listener started: port=8009 > 890.16412041031 doPost DrsProxy v3 > 890.16412041031 Fetching > >http://nhc0sx52.goodrich.com:9087/GoodrichEnterprise/en/US/adirect/good rich? > 890.16412041093 connected. > 890.16412041234 CONTENT TYPE >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > [text/html; charset=UTF-8] > 890.16412041234 ------------------------ REWRITING > ------------------------------- > > Here I do "proxyToClientBuf = new > BufferedOutputStream(response.getOutputStream());" > And then I try "proxyToClientBuf.write(l.getBytes()); // Line 156" > > 890.16412041359 Connection reset by peer: socket write error > java.net.SocketException: Connection reset by peer: socket write error > at java.net.SocketOutputStream.socketWrite0(Native Method) > at java.net.SocketOutputStream.socketWrite(Unknown Source) > at java.net.SocketOutputStream.write(Unknown Source) > at > winstone.WinstoneOutputStream.commit(WinstoneOutputStream.java:161) > at > winstone.WinstoneOutputStream.write(WinstoneOutputStream.java:100) > at java.io.OutputStream.write(Unknown Source) > at java.io.BufferedOutputStream.flushBuffer(Unknown Source) > at java.io.BufferedOutputStream.write(Unknown Source) > at java.io.FilterOutputStream.write(Unknown Source) > at com.drs.rp.DrsProxy.doPost(DrsProxy.java:156) > at com.drs.rp.DrsProxy.doGet(DrsProxy.java:44) > at > javax.servlet.http.HttpServlet.service(HttpServlet.java:104) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:45) > at > winstone.ServletConfiguration.execute(ServletConfiguration.java:249) > at > winstone.RequestDispatcher.forward(RequestDispatcher.java:335) > at > winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:2 44) > at > winstone.RequestHandlerThread.run(RequestHandlerThread.java:150) > at java.lang.Thread.run(Unknown Source) [Winstone 2011/04/05 > 09:53:41] - Untrapped Error in Servlet > java.net.SocketException: Connection reset by peer: socket write error > at java.net.SocketOutputStream.socketWrite0(Native Method) > at java.net.SocketOutputStream.socketWrite(Unknown Source) > at java.net.SocketOutputStream.write(Unknown Source) > at > winstone.WinstoneOutputStream.commit(WinstoneOutputStream.java:161) > at > winstone.WinstoneOutputStream.flush(WinstoneOutputStream.java:199) > at > winstone.WinstoneResponse.flushBuffer(WinstoneResponse.java:438) > at > winstone.RequestDispatcher.forward(RequestDispatcher.java:340) > at > winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:2 44) > at > winstone.RequestHandlerThread.run(RequestHandlerThread.java:150) > at java.lang.Thread.run(Unknown Source) > > 811.16412044343 doPost DrsProxy v3 > 811.16412044343 Not Fetching > >http://nhc0sx52.goodrich.com:9087/favicon.ico? > [/OUTPUT] > > sniped out the code from before > > ---------------------------------------------------------------------- > -------- > Xperia(TM) PLAY > It's a major breakthrough. An authentic gaming smartphone on the > nation's most reliable network. > And it wants your games. > http://p.sf.net/sfu/verizon-sfdev > _______________________________________________ Winstone-devel mailing > list Win...@li... > https://lists.sourceforge.net/lists/listinfo/winstone-devel |