ok thanx for your info -- i didnt notice that ServletOutputStream has a
write method :)
and about speed - its my first catch -- i ll improve speed after i know that
this way works .)
greetings
Wolfgang Kremser
-----Ursprüngliche Nachricht-----
Von: Randy Layman [mailto:[EMAIL PROTECTED]]
Gesendet: Mittwoch, 14. Februar 2001 13:48
An: [EMAIL PROTECTED]
Betreff: RE: Hi Ho - Problem with ServletOutputStream in Tomcat
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: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, February 14, 2001 7:45 AM
To: [EMAIL PROTECTED]
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: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]