Howdy, I don't know and don't care to find out if there are any bugs in that class, as it's been deprecated for a long time now.
Yoav Shapira Millennium ChemInformatics -----Original Message----- From: Verma, Nitin (GECP, OTHER, 529706) [mailto:[EMAIL PROTECTED] Sent: Wednesday, January 14, 2004 10:37 AM To: Tomcat Users List Subject: RE: Getting short reads Any known bug(s) in that class? If yes what is the bug(s)? -----Original Message----- From: Shapira, Yoav [mailto:[EMAIL PROTECTED] Sent: Wednesday, January 14, 2004 9:02 PM To: Tomcat Users List Subject: RE: Getting short reads Howdy, Don't use HttpUtils#parsePostData, don't use HttpUtils at all.� Use request.getParameterMap for the closest equivalent. Yoav Shapira Millennium ChemInformatics -----Original Message----- From: Verma, Nitin (GECP, OTHER, 529706) [mailto:[EMAIL PROTECTED] Sent: Wednesday, January 14, 2004 10:30 AM To: Tomcat Users List Subject: Getting short reads Importance: High Hi All, Firstly let me explain my setup: WebServer (apache httpd using jk2 plugin) Application server tomcat (jakarta-tomcat-4.1.24) server.xml entry for AJP: <Connector className="org.apache.coyote.tomcat4.CoyoteConnector" acceptCount="50" bufferSize="2048" connectionTimeout="10000" debug="0" enableLookups="false" maxProcessors="75" minProcessors="20" address="3.130.232.169" port="13763" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" proxyPort="0" redirectPort="8443" scheme="ajp13" secure="false" tcpNoDelay="true" useURIValidationHack="false"> <Factory className="org.apache.catalina.net.DefaultServerSocketFactory"/> </Connector> And we are using this application for simple services using HTTP-POST. Few of the times I get ContentLength in Header > the real size Content in the Stream. As we are using "javax.servlet.http.HttpUtils.parsePostData(...)" to parse out the POST data we get "java.lang.IllegalArgumentException: Short Read" ----------------HttpUtils's parsePostData Method------------------------ //Take a look at line number 236. public static Hashtable parsePostData(int len, ServletInputStream in){ /* 218*/������� if(len <= 0) /* 219*/����������� return new Hashtable(); /* 221*/������� if(in == null) /* 222*/����������� throw new IllegalArgumentException(); /* 228*/������� byte postedBytes[] = new byte[len]; /* 230*/������� try ��������������� { /* 230*/����������� int offset = 0; /* 233*/����������� do ������������������� { /* 233*/��������������� int inputLen = in.read(postedBytes, offset, len - offset); /* 234*/��������������� if(inputLen <= 0) ����������������������� { /* 235*/������������������� String msg = lStrings.getString("err.io.short_read"); /* 236*/������������������� throw new IllegalArgumentException(msg); ����������������������� } /* 238*/��������������� offset += inputLen; ������������������� } while(len - offset > 0); ��������������� } /* 242*/������� catch(IOException e) ��������������� { /* 242*/����������� throw new IllegalArgumentException(e.getMessage()); ��������������� } /* 251*/������� try ��������������� { /* 251*/����������� String postedBody = new String(postedBytes, 0, len, "8859_1"); /* 252*/����������� return parseQueryString(postedBody); ��������������� } /* 256*/������� catch(UnsupportedEncodingException e) ��������������� { /* 256*/����������� throw new IllegalArgumentException(e.getMessage()); ��������������� } ����������� } ------------------------------------------------------------------------------- ----Usage Code Snip-------- private void setClientType( HttpServletRequest p_Request) { ������� ...������� ������� Hashtable hash = HttpUtils.parsePostData(p_Request.getContentLength(), p_Request.getInputStream()); ������� ... } -------------------------- ----Error on high load--------------- 2004-01-13 15:10:43,339|ERROR|java.lang.IllegalArgumentException|java.lang.IllegalArgumentException: Short Read at javax.servlet.http.HttpUtils.parsePostData(HttpUtils.java:236) at com.ge.appl.tsf.shells.common.TSFParams.setClientType(Unknown Source) at com.ge.appl.tsf.shells.common.TSFParams.<init>(Unknown Source) at com.ge.appl.tsf.shells.web.TSFDispatcher.getParams(Unknown Source) at com.ge.appl.tsf.shells.web.TSFDispatcher.service(Unknown Source) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223) at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:261) at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:360) at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:604) at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:562) at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:679) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619) at java.lang.Thread.run(Thread.java:536) ------------------------------ Any pointers or guidance is welcome! I just need to isolate the problem first. Regards, Nitin This e-mail, including any attachments, is a confidential business communication, and may contain information that is confidential, proprietary and/or privileged.� This e-mail is intended only for the individual(s) to whom it is addressed, and may not be saved, copied, printed, disclosed or used by anyone else.� If you are not the(an) intended recipient, please immediately delete this e-mail from your computer system and notify the sender.� Thank you. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] This e-mail, including any attachments, is a confidential business communication, and may contain information that is confidential, proprietary and/or privileged. This e-mail is intended only for the individual(s) to whom it is addressed, and may not be saved, copied, printed, disclosed or used by anyone else. If you are not the(an) intended recipient, please immediately delete this e-mail from your computer system and notify the sender. Thank you. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
