You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Hitesh Sajnani <hi...@gmail.com> on 2015/10/28 13:40:04 UTC

Axis2 client: Where is timeout defined for java.net.SocketTimeoutException

Hello all,

We are using axis2 1.5.4 lib which has default timeout 30 seconds in
axis2.xml:

<parameter name="ConfigContextTimeoutInterval">30000</parameter>


I'm setting the timeout to 15 seconds as follows in my code: (using apache
common-httpclient-3.1):

ConfigurationContext configurationContext =
serviceClient.getServiceContext().getConfigurationContext();
MultiThreadedHttpConnectionManager multiThreadedHttpConnectionManager = new
MultiThreadedHttpConnectionManager();
HttpConnectionManagerParams params = new HttpConnectionManagerParams();
params.setConnectionTimeout(15000);
params.setSoTimeout(15000);
multiThreadedHttpConnectionManager.setParams(params);
HttpClient httpClient = new HttpClient(multiThreadedHttpConnectionManager);
configurationContext.setProperty(HTTPConstants.CACHED_HTTP_CLIENT,
httpClient);


Testing locally on my desktop, it times out correctly at 15 seconds.
Whereas on other machine (production servers), it times out at 30 seconds.

What is the config that is governing this behaviour of timeout?

We are getting following timeout exceptions:

DEBUG - org.apache.axis2.AxisFault: Read timed out
    at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
~[axis2-kernel-1.5.4.jar:1.5.4]
    at
org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:203)
~[axis2-transport-http-1.5.4.jar:?]
    at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:76)
~[axis2-transport-http-1.5.4.jar:?]
    at
org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:400)
~[axis2-transport-http-1.5.4.jar:?]
    at
org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:225)
~[axis2-transport-http-1.5.4.jar:?]
    at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:438)
~[axis2-kernel-1.5.4.jar:1.5.4]
    at
org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:402)
~[axis2-kernel-1.5.4.jar:1.5.4]
    at
org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
~[axis2-kernel-1.5.4.jar:1.5.4]
    at
org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
~[axis2-kernel-1.5.4.jar:1.5.4]
    at
org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:540)
~[axis2-kernel-1.5.4.jar:1.5.4]
    at
org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:521)
~[axis2-kernel-1.5.4.jar:1.5.4]
    :
    :
Caused by: java.net.SocketTimeoutException: Read timed out
    at java.net.SocketInputStream.socketRead0(Native Method) ~[?:1.7.0_17]
    at java.net.SocketInputStream.read(Unknown Source) ~[?:1.7.0_17]
    at java.net.SocketInputStream.read(Unknown Source) ~[?:1.7.0_17]
    at java.io.BufferedInputStream.fill(Unknown Source) ~[?:1.7.0_17]
    at java.io.BufferedInputStream.read(Unknown Source) ~[?:1.7.0_17]
    at
org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:78)
~[commons-httpclient-3.1.jar:?]
    at
org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:106)
~[commons-httpclient-3.1.jar:?]
    at
org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1116)
~[commons-httpclient-3.1.jar:?]
    at
org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.readLine(MultiThreadedHttpConnectionManager.java:1413)
~[commons-httpclient-3.1.jar:?]
    at
org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1973)
~[commons-httpclient-3.1.jar:?]
    at
org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1735)
~[commons-httpclient-3.1.jar:?]
    at
org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1098)
~[commons-httpclient-3.1.jar:?]
    at
org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
~[commons-httpclient-3.1.jar:?]
    at
org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
~[commons-httpclient-3.1.jar:?]
    at
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
~[commons-httpclient-3.1.jar:?]
    at
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346)
~[commons-httpclient-3.1.jar:?]
    at
org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:557)
~[axis2-transport-http-1.5.4.jar:?]
    at
org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:199)
~[axis2-transport-http-1.5.4.jar:?]
    ... 16 more


I see two more methods to define the timeout:
http://axis.apache.org/axis2/java/core/docs/http-transport.html#timeout_config

I'm confused which timeout works!? It would be great if someone can help
understand the behaviour.

Thank you