tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Wolfgang.Krem...@bmi.gv.at
Subject Hi Ho - Problem with ServletOutputStream in Tomcat
Date Wed, 14 Feb 2001 12:44:54 GMT
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

Mime
View raw message