  | Mailing List | | Home | | Forum Home | | JBoss - Java Application Server | | Struts - A MVC web framework | | Tomcat - JSP/Servlet container | | iText - An open source PDF Java Library | | JDOM - JDOM XML Parser | | J2EE - A mailing list for Java(tm) 2 Platform, Enterprise Edition | | J2EE Pattern - An interest list for Sun Java Center J2EE Pattern Catalog | | Servlet - A mailing list for discussion about Sun Microsystem's Java Servlet API Technology | | JSP - A mailing list about Java Server Pages specification and reference | |
Struts & Hibernate
|
|
|
  | | | Getting short reads | Getting short reads 2004-01-14 - By Verma, Nitin (GECP, OTHER, 529706)
Back
Any known bug(s) in that class? If yes what is the bug(s)?
-- --Original Message-- -- From: Shapira, Yoav [mailto:Yoav.Shapira@(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:NITIN.VERMA@(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 (See http://cat-4.ora-code.com).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 (...)" 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.IllegalArgum entException: Short Read at javax.servlet.http.HttpUtils (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 (HttpServlet.java:853) at org.apache.catalina.core.ApplicationFilterChain (Application FilterChain.java:247) at org.apache.catalina.core.ApplicationFilterChain (ApplicationFilterCh ain.java:193) at org.apache.catalina.core.StandardWrapperValve (StandardWrapperValve.ja va:256) at org.apache.catalina.core.StandardPipeline $StandardPipelineValveContext.invok eNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline (StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase (ContainerBase.java:995) at org.apache.catalina.core.StandardContextValve (StandardContextValve.ja va:191) at org.apache.catalina.core.StandardPipeline $StandardPipelineValveContext.invok eNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline (StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase (ContainerBase.java:995) at org.apache.catalina.core.StandardContext (StandardContext.java:2415) at org.apache.catalina.core.StandardHostValve (StandardHostValve.java:180 ) at org.apache.catalina.core.StandardPipeline $StandardPipelineValveContext.invok eNext(StandardPipeline.java:643) at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve. java:171) at org.apache.catalina.core.StandardPipeline $StandardPipelineValveContext.invok eNext(StandardPipeline.java:641) at org.apache.catalina.valves.ErrorReportValve (ErrorReportValve.java:172 ) at org.apache.catalina.core.StandardPipeline $StandardPipelineValveContext.invok eNext(StandardPipeline.java:641) at org.apache.catalina.core.StandardPipeline (StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase (ContainerBase.java:995) at org.apache.catalina.core.StandardEngineValve (StandardEngineValve.java :174) at org.apache.catalina.core.StandardPipeline $StandardPipelineValveContext.invok eNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline (StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase (ContainerBase.java:995) at org.apache.coyote.tomcat4.CoyoteAdapter (CoyoteAdapter.java:223) at org.apache.jk.server.JkCoyoteHandler (JkCoyoteHandler.java:261) at org.apache.jk.common.HandlerRequest (HandlerRequest.java:360) at org.apache.jk.common.ChannelSocket (ChannelSocket.java:604) at org.apache.jk.common.ChannelSocket (ChannelSocket.java:562)
at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:679) at org.apache.tomcat.util.threads.ThreadPool $ControlRunnable.run(ThreadPool.jav a:619) at java.lang.Thread (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: tomcat-user-unsubscribe@(protected) For additional commands, e-mail: tomcat-user-help@(protected)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859 (See http://iso-8859.ora-code.com)-1"> <META NAME="Generator" CONTENT="MS Exchange Server version 5.5.2655.35"> <TITLE>RE: Getting short reads</TITLE> </HEAD> <BODY> <BR>
<P><FONT SIZE=2>Any known bug(s) in that class? If yes what is the bug(s)?< /FONT> </P>
<P><FONT SIZE=2>-- --Original Message-- --</FONT> <BR><FONT SIZE=2>From: Shapira, Yoav [<A HREF="mailto:Yoav.Shapira@(protected)" >mailto:Yoav.Shapira@(protected)</A>]</FONT> <BR><FONT SIZE=2>Sent: Wednesday, January 14, 2004 9:02 PM</FONT> <BR><FONT SIZE=2>To: Tomcat Users List</FONT> <BR><FONT SIZE=2>Subject: RE: Getting short reads</FONT> </P> <BR> <BR>
<P><FONT SIZE=2>Howdy,</FONT> <BR><FONT SIZE=2>Don't use HttpUtils#parsePostData, don't use HttpUtils at all. Use request.getParameterMap for the closest equivalent.</FONT> </P>
<P><FONT SIZE=2>Yoav Shapira</FONT> <BR><FONT SIZE=2>Millennium ChemInformatics</FONT> </P>
<P><FONT SIZE=2>-- --Original Message-- --</FONT> <BR><FONT SIZE=2>From: Verma, Nitin (GECP, OTHER, 529706) [<A HREF="mailto :NITIN.VERMA@(protected)">mailto:NITIN.VERMA@(protected)</A>] </FONT> <BR><FONT SIZE=2>Sent: Wednesday, January 14, 2004 10:30 AM</FONT> <BR><FONT SIZE=2>To: Tomcat Users List</FONT> <BR><FONT SIZE=2>Subject: Getting short reads</FONT> <BR><FONT SIZE=2>Importance: High</FONT> </P>
<P><FONT SIZE=2>Hi All, </FONT> <BR><FONT SIZE=2>Firstly let me explain my setup: </FONT> <BR><FONT SIZE=2>WebServer (apache httpd using jk2 plugin) </FONT> <BR><FONT SIZE=2>Application server tomcat (jakarta-tomcat-4 (See http://cat-4.ora-code.com).1.24) </FONT> <BR><FONT SIZE=2>server.xml entry for AJP: </FONT> <BR><FONT SIZE=2><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"></FONT></P>
<P><FONT SIZE=2><Factory className="org.apache.catalina.net .DefaultServerSocketFactory"/> </FONT> <BR><FONT SIZE=2></Connector> </FONT> <BR><FONT SIZE=2>And we are using this application for simple services using HTTP-POST. </FONT> <BR><FONT SIZE=2>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(...)"</FONT></P>
<P><FONT SIZE=2>to parse out the POST data we get "java.lang .IllegalArgumentException: Short Read" </FONT> <BR><FONT SIZE=2>-- ---- ---- ---HttpUtils's parsePostData Method-- ---- ------ -- ---- -- </FONT> <BR><FONT SIZE=2>//Take a look at line number 236. </FONT> <BR><FONT SIZE=2>public static Hashtable parsePostData(int len, ServletInputStream in){ </FONT> <BR><FONT SIZE=2>/* 218*/������� if(len <= 0) </FONT> <BR><FONT SIZE=2>/* 219*/����������� return new Hashtable(); </FONT> <BR><FONT SIZE=2>/* 221*/������� if(in == null) </FONT> <BR><FONT SIZE=2>/* 222*/����������� throw new IllegalArgumentException(); < /FONT> <BR><FONT SIZE=2>/* 228*/������� byte postedBytes[] = new byte[len]; </FONT> <BR><FONT SIZE=2>/* 230*/������� try </FONT> <BR><FONT SIZE=2>��������������� { </FONT> <BR><FONT SIZE=2>/* 230*/����������� int offset = 0; </FONT> <BR><FONT SIZE=2>/* 233*/����������� do </FONT> <BR><FONT SIZE=2>������������������� { </FONT> <BR><FONT SIZE=2>/* 233*/��������������� int inputLen = in.read(postedBytes, offset, len - offset); </FONT> <BR><FONT SIZE=2>/* 234*/��������������� if(inputLen <= 0) </FONT> <BR><FONT SIZE=2>����������������������� { </FONT> <BR><FONT SIZE=2>/* 235*/������������������� String msg = lStrings.getString( "err.io.short_read"); </FONT> <BR><FONT SIZE=2>/* 236*/������������������� throw new IllegalArgumentException (msg); </FONT> <BR><FONT SIZE=2>����������������������� } </FONT> <BR><FONT SIZE=2>/* 238*/��������������� offset += inputLen; </FONT> <BR><FONT SIZE=2>������������������� } while(len - offset > 0); </FONT> <BR><FONT SIZE=2>��������������� } </FONT> <BR><FONT SIZE=2>/* 242*/������� catch(IOException e) </FONT> <BR><FONT SIZE=2>��������������� { </FONT> <BR><FONT SIZE=2>/* 242*/����������� throw new IllegalArgumentException(e .getMessage()); </FONT> <BR><FONT SIZE=2>��������������� } </FONT> <BR><FONT SIZE=2>/* 251*/������� try </FONT> <BR><FONT SIZE=2>��������������� { </FONT> <BR><FONT SIZE=2>/* 251*/����������� String postedBody = new String(postedBytes , 0, len, "8859_1"); </FONT> <BR><FONT SIZE=2>/* 252*/����������� return parseQueryString(postedBody); < /FONT> <BR><FONT SIZE=2>��������������� } </FONT> <BR><FONT SIZE=2>/* 256*/������� catch(UnsupportedEncodingException e) </FONT> <BR><FONT SIZE=2>��������������� { </FONT> <BR><FONT SIZE=2>/* 256*/����������� throw new IllegalArgumentException(e .getMessage()); </FONT> <BR><FONT SIZE=2>��������������� } </FONT> <BR><FONT SIZE=2>����������� } </FONT> <BR><FONT SIZE=2>-- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- -- ---- ---- ---- </FONT> <BR><FONT SIZE=2>----Usage Code Snip-- ----- </FONT> <BR><FONT SIZE=2>private void setClientType( HttpServletRequest p_Request) { < /FONT> <BR><FONT SIZE=2>������� ...������� </FONT> <BR><FONT SIZE=2>������� Hashtable hash = HttpUtils.parsePostData(p_Request .getContentLength(), p_Request.getInputStream()); </FONT> <BR><FONT SIZE=2>������� ... </FONT> <BR><FONT SIZE=2>} </FONT> <BR><FONT SIZE=2>-- ---- ---- ---- ---- --- </FONT> <BR><FONT SIZE=2>----Error on high load-- ---- ---- -- </FONT> <BR><FONT SIZE=2>2004-01-13 15:10:43,339|ERROR|java.lang .IllegalArgumentException|java.lang.IllegalArgumentException: Short Read </FONT> <BR><FONT SIZE=2>at javax.servlet.http.HttpUtils (HttpUtils.java :236) </FONT> <BR><FONT SIZE=2>at com.ge.appl.tsf.shells.common.TSFParams.setClientType (Unknown Source) </FONT> <BR><FONT SIZE=2>at com.ge.appl.tsf.shells.common.TSFParams.<init> (Unknown Source) </FONT> <BR><FONT SIZE=2>at com.ge.appl.tsf.shells.web.TSFDispatcher.getParams(Unknown Source) </FONT> <BR><FONT SIZE=2>at com.ge.appl.tsf.shells.web.TSFDispatcher.service(Unknown Source) </FONT> <BR><FONT SIZE=2>at javax.servlet.http.HttpServlet (HttpServlet.java:853 ) </FONT> <BR><FONT SIZE=2>at org.apache.catalina.core.ApplicationFilterChain  .internalDoFilter(ApplicationFilterChain.java:247) </FONT> <BR><FONT SIZE=2>at org.apache.catalina.core.ApplicationFilterChain  (ApplicationFilterChain.java:193) </FONT> <BR><FONT SIZE=2>at org.apache.catalina.core.StandardWrapperValve  (StandardWrapperValve.java:256) </FONT> <BR><FONT SIZE=2>at org.apache.catalina.core.StandardPipeline  $StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) </FONT> <BR><FONT SIZE=2>at org.apache.catalina.core.StandardPipeline  (StandardPipeline.java:480) </FONT> <BR><FONT SIZE=2>at org.apache.catalina.core.ContainerBase (ContainerBase .java:995) </FONT> <BR><FONT SIZE=2>at org.apache.catalina.core.StandardContextValve  (StandardContextValve.java:191) </FONT> <BR><FONT SIZE=2>at org.apache.catalina.core.StandardPipeline  $StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) </FONT> <BR><FONT SIZE=2>at org.apache.catalina.core.StandardPipeline  (StandardPipeline.java:480) </FONT> <BR><FONT SIZE=2>at org.apache.catalina.core.ContainerBase (ContainerBase .java:995) </FONT> <BR><FONT SIZE=2>at org.apache.catalina.core.StandardContext  (StandardContext.java:2415) </FONT> <BR><FONT SIZE=2>at org.apache.catalina.core.StandardHostValve  (StandardHostValve.java:180) </FONT> <BR><FONT SIZE=2>at org.apache.catalina.core.StandardPipeline  $StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) </FONT> <BR><FONT SIZE=2>at org.apache.catalina.valves.ErrorDispatcherValve.invoke (ErrorDispatcherValve.java:171) </FONT> <BR><FONT SIZE=2>at org.apache.catalina.core.StandardPipeline  $StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) </FONT> <BR><FONT SIZE=2>at org.apache.catalina.valves.ErrorReportValve  (ErrorReportValve.java:172) </FONT> <BR><FONT SIZE=2>at org.apache.catalina.core.StandardPipeline  $StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) </FONT> <BR><FONT SIZE=2>at org.apache.catalina.core.StandardPipeline  (StandardPipeline.java:480) </FONT> <BR><FONT SIZE=2>at org.apache.catalina.core.ContainerBase (ContainerBase .java:995) </FONT> <BR><FONT SIZE=2>at org.apache.catalina.core.StandardEngineValve  (StandardEngineValve.java:174) </FONT> <BR><FONT SIZE=2>at org.apache.catalina.core.StandardPipeline  $StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) </FONT> <BR><FONT SIZE=2>at org.apache.catalina.core.StandardPipeline  (StandardPipeline.java:480) </FONT> <BR><FONT SIZE=2>at org.apache.catalina.core.ContainerBase (ContainerBase .java:995) </FONT> <BR><FONT SIZE=2>at org.apache.coyote.tomcat4.CoyoteAdapter  (CoyoteAdapter.java:223) </FONT> <BR><FONT SIZE=2>at org.apache.jk.server.JkCoyoteHandler (JkCoyoteHandler .java:261) </FONT> <BR><FONT SIZE=2>at org.apache.jk.common.HandlerRequest (HandlerRequest .java:360) </FONT> <BR><FONT SIZE=2>at org.apache.jk.common.ChannelSocket (ChannelSocket .java:604) </FONT> <BR><FONT SIZE=2>at org.apache.jk.common.ChannelSocket  (ChannelSocket.java:562) </FONT> <BR><FONT SIZE=2>at org.apache.jk.common.SocketConnection.runIt(ChannelSocket .java:679) </FONT> <BR><FONT SIZE=2>at org.apache.tomcat.util.threads.ThreadPool $ControlRunnable .run(ThreadPool.java:619) </FONT> <BR><FONT SIZE=2>at java.lang.Thread (Thread.java:536) </FONT> </P>
<P><FONT SIZE=2>-- ---- ---- ---- ---- ---- -- </FONT> <BR><FONT SIZE=2>Any pointers or guidance is welcome! I just need to isolate the problem first. </FONT> </P>
<P><FONT SIZE=2>Regards, </FONT> <BR><FONT SIZE=2>Nitin </FONT> </P> <BR> <BR>
<P><FONT SIZE=2>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.</FONT></P> <BR>
<P><FONT SIZE=2>-- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----- -- ---</FONT> <BR><FONT SIZE=2>To unsubscribe, e-mail: tomcat-user-unsubscribe@(protected) .org</FONT> <BR><FONT SIZE=2>For additional commands, e-mail: tomcat-user-help@(protected) .apache.org</FONT> </P>
</BODY> </HTML> -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ------ To unsubscribe, e-mail: tomcat-user-unsubscribe@(protected) For additional commands, e-mail: tomcat-user-help@(protected)
|
|
 |