Return-Path: Mailing-List: contact tomcat-user-help@jakarta.apache.org; run by ezmlm Delivered-To: mailing list tomcat-user@jakarta.apache.org Received: (qmail 57811 invoked from network); 14 Feb 2001 13:22:29 -0000 Received: from unknown (HELO snax.thwt.com) (209.149.197.4) by h31.sny.collab.net with SMTP; 14 Feb 2001 13:22:29 -0000 Received: by snax.thwt.com with Internet Mail Service (5.5.2448.0) id ; Wed, 14 Feb 2001 07:48:14 -0500 Message-ID: From: Randy Layman To: tomcat-user@jakarta.apache.org Subject: RE: Hi Ho - Problem with ServletOutputStream in Tomcat Date: Wed, 14 Feb 2001 07:48:12 -0500 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2448.0) Content-Type: text/plain; charset="iso-8859-1" X-Spam-Rating: h31.sny.collab.net 1.6.2 0/1000/N I think your problem might be because you are trying to print bytes cast to characters. Try using the write method instead. Also, to get a speed up I would suggest reading and writing arrays of bytes at a time (maybe 500 to 2000 bytes) - it greatly reduces the number of system calls involved. Randy -----Original Message----- From: Wolfgang.Kremser@bmi.gv.at [mailto:Wolfgang.Kremser@bmi.gv.at] Sent: Wednesday, February 14, 2001 7:45 AM To: tomcat-user@jakarta.apache.org Subject: Hi Ho - Problem with ServletOutputStream in Tomcat I ve created an Servlet that routes Requests and Responses to and from another Server. When i try to get a Image through this Servlet i get an Error 500. I coded the app as described in the j2ee docu for sending binary data. maybee a little code snipplet and the error trace helps to understand http://127.0.0.1:8080/maria/portal/zmr/javalogo52x88.gif this is the url -- http://127.0.0.1:8080 - is my Tomcat instance /maria/portal - is my proxy servlet /zmr/javalogo52x88.gif is the image i want to display in my browser -> but /zmr is another webapplication on another tomcat server heres the code for the binary data receiving and sending to the client ---------------- // Setting the Headers for the Client same as the Servlet received them from the other server while ((strHeaderKey = HttpUrlCon.getHeaderFieldKey(iCounter)) != null) { strHeaderValue = HttpUrlCon.getHeaderField(iCounter); LogIt("ResponseHeader - Value: " + strHeaderKey + " - " + strHeaderValue); response.setHeader(strHeaderKey,strHeaderValue); iCounter +=1; } // figuring out which type of data the servlet is getting if (HttpUrlCon.getContentType().equals("text/html")) { // Text or HTML -> thats where i use the PrintWriter PrintWriter out = response.getWriter(); int iByte; while ((iByte = brInput.read()) != -1) { out.print((char) iByte); } } else { try { // Everything else assuming its binary data so i use ServletOutputStream ServletOutputStream out = ((ServletResponse)response).getOutputStream(); int iByte; while ((iByte = brInput.read()) != -1) { out.print((char) iByte); } } catch (IOException e) { this.log("IOException !!",e); } } -------------------- heres the error trace i get when i try to process it ----- 2001-02-14 01:26:43 - path="/maria" :proxy: ResponseHeader - Value: Content-Type - image/gif 2001-02-14 01:26:43 - path="/maria" :proxy: ResponseHeader - Value: Content-Length - 1495 2001-02-14 01:26:43 - path="/maria" :proxy: ResponseHeader - Value: Last-Modified - Tue, 13 Feb 2001 10:07:22 GMT 2001-02-14 01:26:43 - path="/maria" :proxy: ResponseHeader - Value: Servlet-Engine - Tomcat Web Server/3.2.1 (JSP 1.1; Servlet 2.2; Java 1.3.0; Windows 2000 5.0 x86; java.vendor=Sun Microsystems Inc.) 2001-02-14 01:26:43 - path="/maria" :proxy: IOException !! - java.io.IOException: Not an ISO 8859_1 character:^ at org.apache.tomcat.core.BufferedServletOutputStream.print(BufferedServletOutp utStream.java:221) at javax.servlet.ServletOutputStream.print(ServletOutputStream.java:177) at at.gv.bmi.maria.proxy.ReturnData(proxy.java:201) at at.gv.bmi.maria.proxy.doGet(proxy.java:63) at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:404) at org.apache.tomcat.core.Handler.service(Handler.java:286) at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372) at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:79 7) at org.apache.tomcat.core.ContextManager.service(ContextManager.java:743) at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpC onnectionHandler.java:210) at org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416) at org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:498) at java.lang.Thread.run(Thread.java:484) -------------------- please help me, its important and i dont know how to solve this problem - in my opinion its a problem in the org.apache.tomcat.core.BufferedServletOutputStream Class ?? why does it need a ISO 8859_1 Charset for Binary Data ??? greetings Wolfgang Kremser --------------------------------------------------------------------- To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org For additional commands, email: tomcat-user-help@jakarta.apache.org