You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Barry Draper <ba...@informix.com> on 2001/06/07 21:54:34 UTC

Problem: Using Tomcat 3.2.1 on NT 4.0 SP5, get Internal Servlet E rror on writing POST response approx. > 800kb in length

Using Tomcat 3.2.1 on NT 4.0 SP 5, I have a servlet which sends XML-encoded
strings in response
to POST requests. When the XML -encoded response is approximately > 800
bytes in length (my test case
is 889 bytes - I don't know the exact threshold yet), I get the following
error:
 
Error: 500
Location: /servlet/MyServlet Internal Servlet
Error:java.lang.ArrayIndexOutOfBoundsException: 10
 at MyServlet.doPost(MyServlet.java:157)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
 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:479)

 
I tried increasing the ServletResponse buffer size to 64kb (the default is
8kb)
and also setting content length as follows:
 
public void doPost( HttpServletRequest request, HttpServletResponse
response)
                throws ServletException, IOException
{
 ...
 response.setContentType("text/plain");
 response.setBufferSize(64 * 1024);
 PrintWriter out = response.getWriter();
 
...
 String result = null;
 // do processing which sets result string
 
 int len = result.length();
 response.setContentLength(len);
...
out.println(result);
 
I verified that the response buffer size was increased to 64kb and the
content length was set correctly.
 
Still, I get the error on writing the response.
 
Is this a known problem with a fix? Am I doing something wrong?
Please advise.
 
Thanks.
Barry Draper
barry@informix.com <ma...@informix.com>