[ 
https://issues.apache.org/jira/browse/AXIS2-5809?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15580712#comment-15580712
 ] 

Hudson commented on AXIS2-5809:
-------------------------------

SUCCESS: Integrated in Jenkins build Axis2 #3601 (See 
[https://builds.apache.org/job/Axis2/3601/])
AXIS2-5809: Ensure that connections are properly released. (veithen: rev 
1765193)
* (edit) 
axis2/modules/adb-tests/src/test/java/org/apache/axis2/databinding/axis2_5809/EchoServiceImpl.java
* (edit) 
axis2/modules/adb-tests/src/test/java/org/apache/axis2/databinding/axis2_5809/ServiceTest.java
* (edit) 
axis2/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPClient4TransportSender.java


> Axis2 does not properly return http connection to connection pool when using 
> http client 4
> ------------------------------------------------------------------------------------------
>
>                 Key: AXIS2-5809
>                 URL: https://issues.apache.org/jira/browse/AXIS2-5809
>             Project: Axis2
>          Issue Type: Bug
>          Components: transports
>    Affects Versions: 1.7.3
>         Environment: Ubuntu 16.04, OpenJDK 7
>            Reporter: Christian H.
>            Priority: Critical
>
> When using HTTP Client 4 with a generated WSDL-Client the HTTP connections 
> are not returned properly to underlying connection pool. The HTTP connections 
> are still allocated, when new requests are made. This ends up in waiting for 
> HTTP connections from pool, but no connections are available anymore.
> The connections should be returned to pool as stated in the Apache HTTP 
> Client 4 documentation (2.3.1):
> https://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html
> Here is some example code to reproduce the problem. The BLZServiceStub is a 
> generated WSDL client (wsdl2java) of the following service: 
> http://www.thomas-bayer.com/axis2/services/BLZService?wsdl . But the problem 
> is independent of the used service.
> {code:title=TestRunner.java}
> package com.thomas_bayer.blz;
> import java.rmi.RemoteException;
> import org.apache.axis2.transport.http.HTTPConstants;
> import org.apache.http.client.HttpClient;
> import org.apache.http.impl.client.DefaultHttpClient;
> import org.apache.http.impl.conn.PoolingClientConnectionManager;
> import org.apache.http.params.BasicHttpParams;
> import org.apache.http.params.CoreConnectionPNames;
> import org.apache.http.params.HttpParams;
> public class TestRunner {
>   private static final int timeoutMillis = 5000;
>   private static final int maxConnections = 2;
>   
>   private static final String[] BLZs = new String[] {
>       "12030000", "12070000"
>   };
>   
>   public static void main(String[] args) throws RemoteException {
>     BLZServiceStub blzService = new BLZServiceStub();
>     
> blzService._getServiceClient().getServiceContext().getConfigurationContext().setProperty(HTTPConstants.CACHED_HTTP_CLIENT,
>  buildHttpClient());
>     for(int i = 0; i <= maxConnections; i++) {
>       BLZServiceStub.GetBankType getBankType = new 
> BLZServiceStub.GetBankType();
>       getBankType.setBlz(BLZs[i % BLZs.length]);
>       BLZServiceStub.GetBank getBank = new BLZServiceStub.GetBank();
>       getBank.setGetBank(getBankType);
>       
>       System.out.println("Querying for bank (iteration: " + i + ")");
>       BLZServiceStub.GetBankResponse response = blzService.getBank(getBank);
>       System.out.println("Bank queried");
>       
>       System.out.println("Result: " + 
> response.getGetBankResponse().getDetails().getBezeichnung());
>     }
>   }
>   protected static HttpClient buildHttpClient() {
>     final PoolingClientConnectionManager conmgr = new 
> PoolingClientConnectionManager();
>     conmgr.setDefaultMaxPerRoute(maxConnections);
>     conmgr.setMaxTotal(maxConnections);
>     
>     final HttpParams params = new BasicHttpParams();
>     params.setLongParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 
> timeoutMillis);
>     params.setLongParameter(CoreConnectionPNames.SO_TIMEOUT, timeoutMillis);
>     
>     return new DefaultHttpClient(conmgr, params);
>   }
> }
> {code}
> Running this code will produce the following output:
> {noformat}
> Querying for bank (iteration: 0)
> Bank queried
> Result: Deutsche Kreditbank Berlin
> Querying for bank (iteration: 1)
> Bank queried
> Result: Deutsche Bank Ld Brandenburg
> Querying for bank (iteration: 2)
> Sep 27, 2016 8:32:43 AM 
> org.apache.axis2.transport.http.impl.httpclient4.HTTPSenderImpl sendViaPost
> INFORMATION: Unable to sendViaPost to 
> url[http://www.thomas-bayer.com/axis2/services/BLZService]
> org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for 
> connection from pool
>       at 
> org.apache.http.impl.conn.PoolingClientConnectionManager.leaseConnection(PoolingClientConnectionManager.java:232)
>       at 
> org.apache.http.impl.conn.PoolingClientConnectionManager$1.getConnection(PoolingClientConnectionManager.java:199)
>       at 
> org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:456)
>       at 
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
>       at 
> org.apache.axis2.transport.http.impl.httpclient4.HTTPSenderImpl.executeMethod(HTTPSenderImpl.java:873)
>       at 
> org.apache.axis2.transport.http.impl.httpclient4.HTTPSenderImpl.sendViaPost(HTTPSenderImpl.java:238)
>       at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:121)
>       at 
> org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:403)
>       at 
> org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:234)
>       at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:431)
>       at 
> org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:399)
>       at 
> org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:225)
>       at 
> org.apache.axis2.client.OperationClient.execute(OperationClient.java:150)
>       at com.thomas_bayer.blz.BLZServiceStub.getBank(BLZServiceStub.java:162)
>       at com.thomas_bayer.blz.TestRunner.main(TestRunner.java:34)
> Exception in thread "main" org.apache.axis2.AxisFault: Timeout waiting for 
> connection from pool
>       at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
>       at 
> org.apache.axis2.transport.http.impl.httpclient4.HTTPSenderImpl.sendViaPost(HTTPSenderImpl.java:242)
>       at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:121)
>       at 
> org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:403)
>       at 
> org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:234)
>       at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:431)
>       at 
> org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:399)
>       at 
> org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:225)
>       at 
> org.apache.axis2.client.OperationClient.execute(OperationClient.java:150)
>       at com.thomas_bayer.blz.BLZServiceStub.getBank(BLZServiceStub.java:162)
>       at com.thomas_bayer.blz.TestRunner.main(TestRunner.java:34)
> Caused by: org.apache.http.conn.ConnectionPoolTimeoutException: Timeout 
> waiting for connection from pool
>       at 
> org.apache.http.impl.conn.PoolingClientConnectionManager.leaseConnection(PoolingClientConnectionManager.java:232)
>       at 
> org.apache.http.impl.conn.PoolingClientConnectionManager$1.getConnection(PoolingClientConnectionManager.java:199)
>       at 
> org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:456)
>       at 
> org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
>       at 
> org.apache.axis2.transport.http.impl.httpclient4.HTTPSenderImpl.executeMethod(HTTPSenderImpl.java:873)
>       at 
> org.apache.axis2.transport.http.impl.httpclient4.HTTPSenderImpl.sendViaPost(HTTPSenderImpl.java:238)
>       ... 9 more
> {noformat}
> The exception is thrown after some timeout waiting for the connection manager 
> to return a connection. The problem even arised, when i do not set any cached 
> http client. In that case the problem will arise after 200 requests (default 
> number of pooled connections within axis2)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscr...@axis.apache.org
For additional commands, e-mail: java-dev-h...@axis.apache.org

Reply via email to