You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bu...@apache.org on 2007/10/12 11:28:05 UTC
DO NOT REPLY [Bug 43610] New: - Using APR library, soap requests fail on slow network.
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG�
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=43610>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND�
INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=43610
Summary: Using APR library, soap requests fail on slow network.
Product: Tomcat 5
Version: 5.5.23
Platform: All
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P2
Component: Connector:AJP
AssignedTo: tomcat-dev@jakarta.apache.org
ReportedBy: yann.grostete@alcatel-lucent.fr
Platform : RedHat ES 4, Apache 2.2.4, libapr-1.so.0.2.8,
libtcnative-1.so.0.1.6, Tomcat 5.5.23, Axis 1.4
Overview description:
---------------------
A C# client sends, by default, a soap request in two parts :
Request-Line/Headers and then the body.
If the request is sent on a slow network, the request fails (See the
stacktrace below).
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.io.IOException: Socket read failed
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:java.io.IOException: Socket
read failed
at org.apache.coyote.ajp.AjpAprProcessor.read(AjpAprProcessor.java:1035)
at
org.apache.coyote.ajp.AjpAprProcessor.readMessage(AjpAprProcessor.java:1156)
at
org.apache.coyote.ajp.AjpAprProcessor.receive(AjpAprProcessor.java:1088)
at
org.apache.coyote.ajp.AjpAprProcessor$SocketInputBuffer.doRead(AjpAprProcessor.java:1226)
at org.apache.coyote.Request.doRead(Request.java:419)
at
org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:265)
at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:370)
at
org.apache.catalina.connector.InputBuffer.readByte(InputBuffer.java:274)
at
org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:105)
at
com.sun.org.apache.xerces.internal.impl.XMLEntityManager$RewindableInputStream.read(XMLEntityManager.java:2622)
at
com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:1033)
at
com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:184)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:798)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
at
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
at
org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at
org.apache.axis.server.AxisServer.initSOAPConstants(AxisServer.java:345)
at org.apache.axis.server.AxisServer.invoke(AxisServer.java:279)
at
org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
at
com.alcatel.unifiedlogin.AlcUnifiedLoginServletWS.doPost(AlcUnifiedLoginServletWS.java:106)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at
org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at
org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:393)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:542)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at
org.apache.coyote.ajp.AjpAprProcessor.process(AjpAprProcessor.java:444)
at
org.apache.coyote.ajp.AjpAprProtocol$AjpConnectionHandler.process(AjpAprProtocol.java:472)
at
org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1286)
at java.lang.Thread.run(Thread.java:595)
Steps to reproduce:
--------------------
1) Send soap request headers with 'Expect: 100-continue' header
POST /UnifiedLogin/services/AlcMpc HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client
Protocol 2.0.50727.832)
Content-Type: text/xml; charset=utf-8
SOAPAction: "getTopologyAndUserInformation"
Host: srvecc.aouch.alcatel.com
Content-Length: 428
Expect: 100-continue
Connection: Close
2) Wait for 'HTTP/1.1 100 Continue' response
3) Wait 100 milliseconds
4) Send the soap body
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body><in0 xmlns="http://mpc.alcatel.com">
<parameter
xmlns="http://types.mpc.alcatel.com">16C636164756C6F5162747865727E2D696C6C6562702132333430213138393636383531313433383</parameter></in0>
</soap:Body>
</soap:Envelope>
5) Wait for the response, you should get something like that
HTTP/1.1 500 Internal Server Error
Date: Thu, 13 Sep 2007 07:28:32 GMT
Server: Apache
Set-Cookie: JSESSIONID=896692451D3787425D67734FEF50A658.exttomcat1;
Path=/UnifiedLogin
Connection: close
Transfer-Encoding: chunked
Content-Type: text/xml;charset=utf-8
207
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server.userException</faultcode>
<faultstring>java.io.IOException: Socket read failed</faultstring>
<detail><ns1:hostname
xmlns:ns1="http://xml.apache.org/axis/">srvecc.aouch.alcatel.com</ns1:hostname></detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
0
Actual Results:
Soap requests fail on slow network.
Expected Results:
Soap request should not failed, AjpAprProcessor.read(int n) method
should wait for body part.
--
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
DO NOT REPLY [Bug 43610] - Using APR library, soap requests fail on slow network.
Posted by bu...@apache.org.
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG�
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=43610>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND�
INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=43610
markt@apache.org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |WORKSFORME
------- Additional Comments From markt@apache.org 2007-12-01 11:32 -------
I assume you are using mod_proxy_ajp
Using:
- httpd 2.2.4 with mod_proxy_ajp
- Tomcat 5.5.X (latest from svn)
- Native connector 1.1.10
- Windows XP OS
I cannot reproduce this problem. I have a very simple test client that connects
to httpd, sends the headers, waits for the 100-continue and then sends the body
and this works. I have manually stepped through the code so the delay between
the 100-continue and sending the request body is much more than 100ms.
My guess would be an old bug or odd behaviour from your soap client.
I suggest you try the following:
- upgrade to native connector 1.1.10
- upgrade to Tomcat 5.5.25
If you still see the issue then try a simple test client. I can provide you with
the source for the one I use if that helps.
--
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org