How to Configure Timeout Duration on the Client Side for Axis2 Web Services
Axis2 uses CommonsHTTPTransportSender by default, which is based on commons-httpclient-3.1. At transport level, there’re two types of timeouts that can be set:
1. Socket Timeout
2. Connection Timeout
Here’s how you can configure the above ones:
Way #1: Configuring timeouts in axis2.xml
Socket Timeout
<parameter name=”SO_TIMEOUT”>some_integer_value</parameter>Connection timeout
<parameter name=”CONNECTION_TIMEOUT”>some_integer_value</parameter>
Way #2: Configuring timeouts in code
…
Options options = new Options();
options.setProperty(HTTPConstants.SO_TIMEOUT, new Integer(timeOutInMilliSeconds));
options.setProperty(HTTPConstants.CONNECTION_TIMEOUT, new Integer(timeOutInMilliSeconds));
// or
options.setTimeOutInMilliSeconds(timeOutInMilliSeconds);
…Real-life code: How to set timeout for a Axis2 Stub?
long timeout = 2 * 60 * 1000; // Two minutes
Stub stub = new TestStub();
stub._getServiceClient().getOptions().setTimeOutInMilliSeconds(soTimeout);
//or
long timeout = 2 * 60 * 1000; // Two minutes
Stub stub = new TestStub();
stub._getServiceClient().getOptions().setProperty(
HTTPConstants.SO_TIMEOUT, new Integer(timeOutInMilliSeconds));
stub._getServiceClient().getOptions().setProperty(
HTTPConstants.CONNECTION_TIMEOUT, new Integer(timeOutInMilliSeconds));Published at DZone with permission of Singaram Subramanian. See the original article here.
Opinions expressed by DZone contributors are their own.