<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">

<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>

                                <td>

                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="https://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
                                                                </td>

                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px;  -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
    Failed executing POST - ClientAbortException: java.io.IOException: Socket read failed
</h3>
<span style="margin-bottom: 10px;">
    created by <a href="https://community.jboss.org/people/Montia">Montia</a> in <i>JBoss Web Services</i> - <a href="https://community.jboss.org/message/825383#825383">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p>I am running JBoss 7.1.1.Final behind Apache 2.2 with mod_cluster-1.2.0.Final. I have a RESTEasy web service that is accessed over HTTPS from the same user session via repeated successive GET and POST requests to the same resource using jQuery.ajax().</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>The user logs into the application and goes through a series of questions where the answer to the current question determines the question that will be displayed next. The question to be displayed is acquired via a GET request to the test/question resource. The answer selected by the user is sent along with other data to the server as a JSON string via a POST request on the same resource when the user clicks a button.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>About 1% of the time, when trying to send a POST request nothing happens on the client for exactly 5 minutes. After 5 minutes the error handler of the ajax() call indicates a Bad Request status code. We've noticed this behaviour only from IE8 and IE9. I have not noticed it at all when testing locally directly against the JBoss server.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>After the 5 minutes, the following line is added to the Apache ssl access log:</p><p>"POST /myApp/rest/test/question HTTP/1.1" 400 226</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>And the following error is logged in the JBoss server.log:</p><p>SEVERE [org.jboss.resteasy.core.SynchronousDispatcher] (ajp--127.0.0.1-8009-5) Failed executing POST /myApp/test/question: org.jboss.resteasy.spi.ReaderException: ClientAbortException:&#160; java.io.IOException: Socket read failed<br/> at org.jboss.resteasy.core.MessageBodyParameterInjector.inject(MessageBodyParameterInjector.java:202) [resteasy-jaxrs-2.3.2.Final.jar:]<br/> at org.jboss.resteasy.core.MethodInjectorImpl.injectArguments(MethodInjectorImpl.java:124) [resteasy-jaxrs-2.3.2.Final.jar:]<br/> at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:147) [resteasy-jaxrs-2.3.2.Final.jar:]<br/> at org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:257) [resteasy-jaxrs-2.3.2.Final.jar:]<br/> at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:222) [resteasy-jaxrs-2.3.2.Final.jar:]<br/> at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:211) [resteasy-jaxrs-2.3.2.Final.jar:]<br/> at org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:525) [resteasy-jaxrs-2.3.2.Final.jar:]<br/> at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:502) [resteasy-jaxrs-2.3.2.Final.jar:]<br/> at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:119) [resteasy-jaxrs-2.3.2.Final.jar:]<br/> at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208) [resteasy-jaxrs-2.3.2.Final.jar:]<br/> at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55) [resteasy-jaxrs-2.3.2.Final.jar:]<br/> at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50) [resteasy-jaxrs-2.3.2.Final.jar:]<br/> at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]<br/> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]<br/> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]<br/> at org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:62) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]<br/> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]<br/> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]<br/> at org.myapp.util.JSONPRequestFilter.doFilter(JSONPRequestFilter.java:77) [classes:]<br/> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]<br/> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]<br/> at org.myapp.security.Authenticator.doFilter(Authenticator.java:59) [classes:]<br/> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]<br/> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]<br/> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]<br/> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]<br/> at org.jboss.modcluster.container.jbossweb.JBossWebContext$RequestListenerValve.event(JBossWebContext.java:67)<br/> at org.jboss.modcluster.container.jbossweb.JBossWebContext$RequestListenerValve.invoke(JBossWebContext.java:48)<br/> at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:489) [jbossweb-7.0.13.Final.jar:]<br/> at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final]<br/> at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]<br/> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]<br/> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]<br/> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]<br/> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]<br/> at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:505) [jbossweb-7.0.13.Final.jar:]<br/> at org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:445) [jbossweb-7.0.13.Final.jar:]<br/> at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]<br/> at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_32]<br/>Caused by: ClientAbortException:&#160; java.io.IOException: Socket read failed<br/> at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:357) [jbossweb-7.0.13.Final.jar:]<br/> at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:420) [jbossweb-7.0.13.Final.jar:]<br/> at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:379) [jbossweb-7.0.13.Final.jar:]<br/> at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:193) [jbossweb-7.0.13.Final.jar:]<br/> at org.codehaus.jackson.impl.ByteSourceBootstrapper.ensureLoaded(ByteSourceBootstrapper.java:507) [jackson-core-asl-1.9.2.jar:1.9.2]<br/> at org.codehaus.jackson.impl.ByteSourceBootstrapper.detectEncoding(ByteSourceBootstrapper.java:129) [jackson-core-asl-1.9.2.jar:1.9.2]<br/> at org.codehaus.jackson.impl.ByteSourceBootstrapper.constructParser(ByteSourceBootstrapper.java:224) [jackson-core-asl-1.9.2.jar:1.9.2]<br/> at org.codehaus.jackson.JsonFactory._createJsonParser(JsonFactory.java:785) [jackson-core-asl-1.9.2.jar:1.9.2]<br/> at org.codehaus.jackson.JsonFactory.createJsonParser(JsonFactory.java:561) [jackson-core-asl-1.9.2.jar:1.9.2]<br/> at org.codehaus.jackson.jaxrs.JacksonJsonProvider.readFrom(JacksonJsonProvider.java:414)<br/> at org.jboss.resteasy.core.interception.MessageBodyReaderContextImpl.proceed(MessageBodyReaderContextImpl.java:105) [resteasy-jaxrs-2.3.2.Final.jar:]<br/> at org.jboss.resteasy.plugins.interceptors.encoding.GZIPDecodingInterceptor.read(GZIPDecodingInterceptor.java:61) [resteasy-jaxrs-2.3.2.Final.jar:]<br/> at org.jboss.resteasy.core.interception.MessageBodyReaderContextImpl.proceed(MessageBodyReaderContextImpl.java:108) [resteasy-jaxrs-2.3.2.Final.jar:]<br/> at org.jboss.resteasy.core.MessageBodyParameterInjector.inject(MessageBodyParameterInjector.java:169) [resteasy-jaxrs-2.3.2.Final.jar:]<br/> ... 38 more<br/>Caused by: java.io.IOException: Socket read failed<br/> at org.apache.coyote.ajp.AjpProcessor.read(AjpProcessor.java:1135) [jbossweb-7.0.13.Final.jar:]<br/> at org.apache.coyote.ajp.AjpProcessor.readMessage(AjpProcessor.java:1213) [jbossweb-7.0.13.Final.jar:]<br/> at org.apache.coyote.ajp.AjpProcessor.receive(AjpProcessor.java:1152) [jbossweb-7.0.13.Final.jar:]<br/> at org.apache.coyote.ajp.AjpProcessor$SocketInputBuffer.doRead(AjpProcessor.java:1278) [jbossweb-7.0.13.Final.jar:]<br/> at org.apache.coyote.Request.doRead(Request.java:438) [jbossweb-7.0.13.Final.jar:]<br/> at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:347) [jbossweb-7.0.13.Final.jar:]<br/> ... 51 more</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>The request goes through an authentication filter and then a second filter. In both instances, the request just gets passed along using chain.doFilter(ServletRequest, ServletResponse). Based on my debugging, the request makes it past the filters fine, but never makes it inside updateTestQuestion(), the method in the web service that handles the POST request:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><span class="lit">@POST</span><span class="pln"><br/></span><span class="lit">@Path</span><span class="pun">(</span><span class="str">"/question"</span><span class="pun">)</span><span class="pln"><br/></span><span class="lit">@Consumes</span><span class="pun">(</span><span class="typ">MediaType</span><span class="pun">.</span><span class="pln">APPLICATION_JSON</span><span class="pun">)</span><span class="pln"><br/></span><span class="lit">@Produces</span><span class="pun">(</span><span class="typ">MediaType</span><span class="pun">.</span><span class="pln">APPLICATION_JSON</span><span class="pun">)</span><span class="pln"><br/></span><span class="kwd">public</span><span class="pln"> </span><span class="typ">Response</span><span class="pln"> updateTestQuestion</span><span class="pun">(</span><span class="lit">@Context</span><span class="pln"> </span><span class="typ">UriInfo</span><span class="pln"> uriInfo</span><span class="pun">,</span><span class="pln"> </span><span class="typ">TestQuestion</span><span class="pln"> curTestQuestion</span><span class="pun">)</span><span class="pln"><br/></span></p><p><span class="pln">- where </span><span class="typ">TestQuestion</span><span class="pln"> is a JavaBean with several properties and getter and setter methods:</span></p><p style="min-height: 8pt; height: 8pt; padding: 0px;"><span class="pln"></span>&#160;</p><p><span class="lit">@XmlRootElement</span><span class="pln"><br/></span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">class</span><span class="pln"> </span><span class="typ">TestQuestion</span><span class="pln"> </span><span class="kwd">implements</span><span class="pln"> </span><span class="typ">Serializable</span><span class="pln"> </span><span class="pun">{</span></p><p style="min-height: 8pt; height: 8pt; padding: 0px;"><span class="pun"></span>&#160;</p><p><span class="pun">}</span></p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>I am trying to find out what could be causing this or how I can debug it better. At this point I think there is some kind of breakdown in the client-server communication, but I do not know at which end and how to detect it.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Thank you,</p><p>Monica</p></div>

<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
    <p style="margin: 0;">Reply to this message by <a href="https://community.jboss.org/message/825383#825383">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in JBoss Web Services at <a href="https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2044">Community</a></p>
</div></td>
                        </tr>
                    </tbody>
                </table>


                </td>
            </tr>
        </tbody>
    </table>

</div>

</body>
</html>