Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id D0BB5200B27 for ; Wed, 22 Jun 2016 18:31:59 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id CEED8160A69; Wed, 22 Jun 2016 16:31:59 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 255F1160A24 for ; Wed, 22 Jun 2016 18:31:59 +0200 (CEST) Received: (qmail 6825 invoked by uid 500); 22 Jun 2016 16:31:58 -0000 Mailing-List: contact java-dev-help@axis.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: java-dev@axis.apache.org Delivered-To: mailing list java-dev@axis.apache.org Received: (qmail 6791 invoked by uid 99); 22 Jun 2016 16:31:58 -0000 Received: from arcas.apache.org (HELO arcas) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 22 Jun 2016 16:31:58 +0000 Received: from arcas.apache.org (localhost [127.0.0.1]) by arcas (Postfix) with ESMTP id 0AFD52C033A for ; Wed, 22 Jun 2016 16:31:58 +0000 (UTC) Date: Wed, 22 Jun 2016 16:31:58 +0000 (UTC) From: "Andreas Veithen (JIRA)" To: java-dev@axis.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Moved] (AXIS2-5791) Issue with Axis2, jax-ws web service call - HttpClient 3.1/4 java.net.SocketException: Socket Closed due to stale SSL connection, java 8 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 archived-at: Wed, 22 Jun 2016 16:32:00 -0000 [ https://issues.apache.org/jira/browse/AXIS2-5791?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andreas Veithen moved TRANSPORTS-56 to AXIS2-5791: -------------------------------------------------- Affects Version/s: (was: 1.7.0) 1.7.0 Component/s: (was: Base) transports Key: AXIS2-5791 (was: TRANSPORTS-56) Project: Axis2 (was: Axis2 Transports) > Issue with Axis2, jax-ws web service call - HttpClient 3.1/4 java.net.SocketException: Socket Closed due to stale SSL connection, java 8 > ---------------------------------------------------------------------------------------------------------------------------------------- > > Key: AXIS2-5791 > URL: https://issues.apache.org/jira/browse/AXIS2-5791 > Project: Axis2 > Issue Type: Bug > Components: transports > Affects Versions: 1.7.0 > Environment: Oracle Linux: 2.6.18-274.el5 x86_64, tomcat 7.0.68 > Reporter: Jon Hargreaves > > We are in the process of upgrading an axis2 application from java 6 to java 8 and have been running tests against existing jax-ws axis2 services. > We have a web service, running on tomcat, that is placing a client call, also via jax-ws to an external web service via an SSL connection. > After switching from java 6 to java 8 we have found that the client call is still working. > However, when placing a second call to the same web service the call fails with a "java.net.SocketException: Socket Closed" exception. > This issue is occurring consistently, i.e. if we restart the tomcat server and then execute the web service which places the client call, via SoapUI, the same exception is logged. > On further analysis of the log file it seems that, on the second call, the http connection is being returned from the cache via the httpclient MultiThreadedHttpConnectionManager class. > The exception is logged, as below: > DEBUG org.apache.commons.httpclient.HttpConnection - An error occurred while reading from the socket, is appears to be stale > java.net.SocketException: Socket Closed > at java.net.AbstractPlainSocketImpl.setOption(AbstractPlainSocketImpl.java:212) > at java.net.PlainSocketImpl.setOption(PlainSocketImpl.java:176) > at java.net.Socket.setSoTimeout(Socket.java:1141) > at sun.security.ssl.BaseSSLSocketImpl.setSoTimeout(BaseSSLSocketImpl.java:631) > at sun.security.ssl.SSLSocketImpl.setSoTimeout(SSLSocketImpl.java:2526) > at org.apache.commons.httpclient.HttpConnection.isStale(HttpConnection.java:515) > at org.apache.commons.httpclient.HttpConnection.closeIfStale(HttpConnection.java:431) > at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.closeIfStale(MultiThreadedHttpConnectionManager.java:1313) > at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:382) > at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171) > at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397) > at org.apache.axis2.transport.http.impl.httpclient3.HTTPSenderImpl.executeMethod(HTTPSenderImpl.java:872) > at org.apache.axis2.transport.http.impl.httpclient3.HTTPSenderImpl.sendViaPost(HTTPSenderImpl.java:212) > 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) > It therefore seems that the remote server, to which we are placing the client jax-ws call, is closing the connection immediately after sending the response but that the client is not detecting this. > When the next web service call is placed via the client the connection is retrieved from the connection pool, the httpclient.HttpConnection.isStale() check is performed, the connection is not correctly detected as being stale and then the ssl.SSLSocketImpl.setSoTimeout() method is called to reset the socket timeout, java net then detects that the connection is no longer active and raises the socket exception. > Note that when this issue occurs it is no longer possible to run this web service, i.e. the socket exception is then output on every invocation of the service until the tomcat server is restarted. > Also, note that this issue only occurs with java 8. The socket exception is not output with java 6. > I have performed tests with different versions of axis2 and found that, with version 1.6.0, the same socket exception is output but that a new connection is then opened and the web service then executes and returns a response without issue. > Finally, I read the Apache Axis2 1.7.0 release note which states that Axis2 1.7.0 and above supports Apache HttpClient 4.x in addition to the no longer maintained Commons HttpClient 3.x. > I have attempted to follow the instructions for upgrading the HttpClient to release 4.x but in the log file I'm still seeing output for org.apache.commons.httpclient.HttpConnection. > It seems that the change applied to the axis2.xml config file is not taking effect. > Please could you help with the resolution for the socket exception issue and also give guidance with upgrading the HttpClient to version 4.2.5. -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org For additional commands, e-mail: java-dev-help@axis.apache.org