Title: 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]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to