3

This issue occurs in IE8 only, On browser it throws http 502 error ,while in apache it throws http 103 & my application breaks due to this error

After adding sysout in dwr jar i got the following logs:

    DWR Exception in ParsePost Data Failed to read input
    java.io.IOException: Underlying input stream returned zero bytes
        at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:268)
        at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
        at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
        at java.io.InputStreamReader.read(InputStreamReader.java:167)
        at java.io.BufferedReader.fill(BufferedReader.java:136)
        at java.io.BufferedReader.readLine(BufferedReader.java:299)
        at java.io.BufferedReader.readLine(BufferedReader.java:362)
        at org.directwebremoting.dwrp.ParseUtil.parsePost(ParseUtil.java:65)
        at org.directwebremoting.dwrp.Batch.<init>(Batch.java:58)
        at org.directwebremoting.dwrp.BaseCallMarshaller.marshallInbound(BaseCallMarshaller.java:76)
        at org.directwebremoting.servlet.PlainCallHandler.handle(PlainCallHandler.java:42)
        at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:101)
        at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:146)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at com.zycus.icontract.common.IContractSessionValidationOpenXavaFilter.doFilter(IContractSessionValidationOpenXavaFilter.java:66)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
        at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:298)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
    DWR Excpetion in MarshallInbound 
    org.directwebremoting.extend.ServerException: Failed to read input
        at org.directwebremoting.dwrp.ParseUtil.parsePost(ParseUtil.java:110)
        at org.directwebremoting.dwrp.Batch.<init>(Batch.java:58)
        at org.directwebremoting.dwrp.BaseCallMarshaller.marshallInbound(BaseCallMarshaller.java:76)
        at org.directwebremoting.servlet.PlainCallHandler.handle(PlainCallHandler.java:42)
        at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:101)
        at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:146)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at com.zycus.icontract.common.IContractSessionValidationOpenXavaFilter.doFilter(IContractSessionValidationOpenXavaFilter.java:66)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
        at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:298)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
    Caused by: java.io.IOException: Underlying input stream returned zero bytes
        at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:268)
        at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
        at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
        at java.io.InputStreamReader.read(InputStreamReader.java:167)
        at java.io.BufferedReader.fill(BufferedReader.java:136)
        at java.io.BufferedReader.readLine(BufferedReader.java:299)
        at java.io.BufferedReader.readLine(BufferedReader.java:362)
        at org.directwebremoting.dwrp.ParseUtil.parsePost(ParseUtil.java:65)
        ... 25 more

Inside marshallException
Exiting from marshallException
Returning from PlainCallHandler

I found few solution for the above issue :

1)Increase keepAliveTimout in apache

2)Change the way of reading input in ParseUtil class of dwr jar from

BufferedReader in = new BufferedReader(new InputStreamReader(req.getInputStream()));

to

BufferedReader in = req.getReader();

But issue is still reproducible in IE8

I also tried to give alert message "Internal Server Error. Please Try Again" when this exception occur but alert is not coming. I have done changes in dwr-engine.js for showing alert message

Garry
  • 306
  • 1
  • 7
  • 24
  • 1
    when does this exception comes.. what are u actually trying to actually achieve out of this.. plz elaborate ur issue – Garry May 02 '13 at 15:55
  • This issue occurs when continuously making dwr calls in IE8 – Jitendra Nandre May 02 '13 at 15:58
  • `http://www.coderanch.com/t/610812/Performance/java/DWR-call-throws-Failed-read#2790330` – Garry May 03 '13 at 09:46
  • exception change when the way reading input change from `BufferedReader in = new BufferedReader(new InputStreamReader(req.getInputStream()));` to `BufferedReader in = req.getReader();` – Jitendra Nandre May 03 '13 at 12:37
  • Exception :: `org.directwebremoting.extend.ServerException: Failed to read input at org.directwebremoting.dwrp.ParseUtil.parsePost(ParseUtil.java:112) at org.directwebremoting.dwrp.Batch.(Batch.java:58) at org.directwebremoting.dwrp.BaseCallMarshaller.marshallInbound(BaseCallMarshaller.java:76) at org.directwebremoting.servlet.PlainCallHandler.handle(PlainCallHandler.java:43) at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:99) at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:145)` – Jitendra Nandre May 03 '13 at 12:41
  • `Caused by: java.io.IOException: Socket read failed at org.apache.coyote.ajp.AjpProcessor.read(AjpProcessor.java:313) at org.apache.coyote.ajp.AjpProcessor.readMessage(AjpProcessor.java:364) at org.apache.coyote.ajp.AjpProcessor.receive(AjpProcessor.java:331) at org.apache.coyote.ajp.AbstractAjpProcessor.refillReadBuffer(AbstractAjpProcessor.java:576) at org.apache.coyote.ajp.AbstractAjpProcessor$SocketInputBuffer.doRead(AbstractAjpProcessor.java:1027)` – Jitendra Nandre May 03 '13 at 12:42
  • after DWR jar debugging i got following scenario:-> for 5 min it stuck on `BufferedReader in = req.getReader();` after words apache breaks the connection & throws 103 error – Jitendra Nandre May 04 '13 at 14:54
  • what version of DWR are you using? – Old Pro May 12 '13 at 18:29
  • Please also give more details about what you are doing to trigger this error. What JavaScript are you executing in the browser when this happens? – Old Pro May 12 '13 at 19:35
  • DWR version 2 in openxava framework – Jitendra Nandre May 20 '13 at 09:28
  • This IE8 issue, http://support.microsoft.com/kb/895954 , only the header data is posted when re-post the request.. as per investigation, i am still looking for soluation... – Jitendra Nandre May 20 '13 at 09:30

1 Answers1

0

1)Increase keepAliveTimout in apache

2)Change the way of reading input in ParseUtil class of dwr jar

Garry
  • 306
  • 1
  • 7
  • 24