svn commit: r963710 - /axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/AbstractHTTPSender.java

2010-07-13 Thread gawor
Author: gawor
Date: Tue Jul 13 13:32:24 2010
New Revision: 963710

URL: http://svn.apache.org/viewvc?rev=963710&view=rev
Log:
AXIS2-4751: Create a new instance of HttpClient since it is not used in 
thread-safe way. The connection manager is not automatically reused right now 
because other bugs in Axis2 or related libraries cause test failures when 
connection reuse is enabled.

Modified:

axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/AbstractHTTPSender.java

Modified: 
axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/AbstractHTTPSender.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/AbstractHTTPSender.java?rev=963710&r1=963709&r2=963710&view=diff
==
--- 
axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/AbstractHTTPSender.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/transport/http/src/org/apache/axis2/transport/http/AbstractHTTPSender.java
 Tue Jul 13 13:32:24 2010
@@ -25,12 +25,12 @@ import org.apache.axiom.om.OMOutputForma
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
 import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.OperationContext;
 import org.apache.axis2.description.TransportOutDescription;
 import org.apache.axis2.i18n.Messages;
 import org.apache.axis2.transport.MessageFormatter;
 import org.apache.axis2.transport.TransportUtils;
-import org.apache.axis2.util.JavaUtils;
 import org.apache.axis2.wsdl.WSDLConstants;
 import org.apache.commons.httpclient.Credentials;
 import org.apache.commons.httpclient.Header;
@@ -485,44 +485,55 @@ public abstract class AbstractHTTPSender
 }
 
 protected HttpClient getHttpClient(MessageContext msgContext) {
-HttpClient httpClient;
-Object reuse = 
msgContext.getOptions().getProperty(HTTPConstants.REUSE_HTTP_CLIENT);
-if (reuse == null) {
-reuse = 
msgContext.getConfigurationContext().getProperty(HTTPConstants.REUSE_HTTP_CLIENT);
-}
-if (reuse != null && JavaUtils.isTrueExplicitly(reuse)) {
-httpClient = (HttpClient) 
msgContext.getOptions().getProperty(HTTPConstants.CACHED_HTTP_CLIENT);
-if (httpClient == null) {
-httpClient = (HttpClient) msgContext.getConfigurationContext()
-.getProperty(HTTPConstants.CACHED_HTTP_CLIENT);
-}
-if (httpClient != null)
-return httpClient;
-MultiThreadedHttpConnectionManager connectionManager =
-new MultiThreadedHttpConnectionManager();
-httpClient = new HttpClient(connectionManager);
-msgContext.getConfigurationContext()
-.setProperty(HTTPConstants.CACHED_HTTP_CLIENT, httpClient);
-} else {
-HttpConnectionManager connManager =
-(HttpConnectionManager) msgContext.getProperty(
-HTTPConstants.MULTITHREAD_HTTP_CONNECTION_MANAGER);
-if (connManager == null) {
-connManager =
-(HttpConnectionManager) msgContext.getProperty(
-
HTTPConstants.MUTTITHREAD_HTTP_CONNECTION_MANAGER);
-}
-if(connManager != null){
-httpClient = new HttpClient(connManager);
-} else {
-//Multi threaded http connection manager has set as the 
default 
-connManager = new MultiThreadedHttpConnectionManager();
-httpClient = new HttpClient(connManager);
+ConfigurationContext configContext = 
msgContext.getConfigurationContext();
+
+HttpClient httpClient = (HttpClient) 
msgContext.getProperty(HTTPConstants.CACHED_HTTP_CLIENT);
+if (httpClient == null) {
+httpClient = (HttpClient) 
configContext.getProperty(HTTPConstants.CACHED_HTTP_CLIENT);
+}
+if (httpClient != null) {
+return httpClient;
+}
+
+HttpConnectionManager connManager =
+(HttpConnectionManager) msgContext.getProperty(
+ HTTPConstants.MULTITHREAD_HTTP_CONNECTION_MANAGER);
+if (connManager == null) {
+connManager =
+(HttpConnectionManager) msgContext.getProperty(
+ HTTPConstants.MUTTITHREAD_HTTP_CONNECTION_MANAGER);
+}
+if (connManager == null) {
+// reuse HttpConnectionManager
+synchronized (configContext) {
+connManager = (HttpConnectionManager) 
configContext.getProperty(
+   
HTTPConstants.MULTITHREAD_HTTP_CONNECTION_MANAGER);
+if (connManager == null) {
+log.tra

svn commit: r963711 - /axis/axis2/java/core/branches/java/1_5/modules/transport/http/src/org/apache/axis2/transport/http/AbstractHTTPSender.java

2010-07-13 Thread gawor
Author: gawor
Date: Tue Jul 13 13:32:58 2010
New Revision: 963711

URL: http://svn.apache.org/viewvc?rev=963711&view=rev
Log:
AXIS2-4751: Create a new instance of HttpClient since it is not used in 
thread-safe way. The connection manager is not automatically reused right now 
because other bugs in Axis2 or related libraries cause test failures when 
connection reuse is enabled.

Modified:

axis/axis2/java/core/branches/java/1_5/modules/transport/http/src/org/apache/axis2/transport/http/AbstractHTTPSender.java

Modified: 
axis/axis2/java/core/branches/java/1_5/modules/transport/http/src/org/apache/axis2/transport/http/AbstractHTTPSender.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/branches/java/1_5/modules/transport/http/src/org/apache/axis2/transport/http/AbstractHTTPSender.java?rev=963711&r1=963710&r2=963711&view=diff
==
--- 
axis/axis2/java/core/branches/java/1_5/modules/transport/http/src/org/apache/axis2/transport/http/AbstractHTTPSender.java
 (original)
+++ 
axis/axis2/java/core/branches/java/1_5/modules/transport/http/src/org/apache/axis2/transport/http/AbstractHTTPSender.java
 Tue Jul 13 13:32:58 2010
@@ -41,8 +41,7 @@ import org.apache.commons.httpclient.Htt
 import org.apache.commons.httpclient.HttpConnectionManager;
 import org.apache.commons.httpclient.HttpMethod;
 import org.apache.commons.httpclient.HttpMethodBase;
-import org.apache.commons.httpclient.HttpVersion;
-import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
+import org.apache.commons.httpclient.HttpVersion;import 
org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
 import org.apache.commons.httpclient.NTCredentials;
 import org.apache.commons.httpclient.NameValuePair;
 import org.apache.commons.httpclient.UsernamePasswordCredentials;
@@ -479,35 +478,57 @@ public abstract class AbstractHTTPSender
 }
 
 protected HttpClient getHttpClient(MessageContext msgContext) {
-HttpClient httpClient;
-final ConfigurationContext configContext = 
msgContext.getConfigurationContext();
-synchronized (lock) {
+ConfigurationContext configContext = 
msgContext.getConfigurationContext();
+
+HttpClient httpClient = (HttpClient) 
msgContext.getProperty(HTTPConstants.CACHED_HTTP_CLIENT);
+if (httpClient == null) {
 httpClient = (HttpClient) 
configContext.getProperty(HTTPConstants.CACHED_HTTP_CLIENT);
-if (httpClient == null) {
-log.trace("Making new ConnectionManager");
-HttpConnectionManager connManager = new 
MultiThreadedHttpConnectionManager();
-
-// In case we need to set any params, do it here, but for now 
use defaults.
-//HttpConnectionManagerParams params = new 
HttpConnectionManagerParams();
-//
params.setMaxConnectionsPerHost(HostConfiguration.ANY_HOST_CONFIGURATION, 200);
-//etc...
-//connManager.setParams(params);
-
-httpClient = new HttpClient(connManager);
-HttpClientParams clientParams = new HttpClientParams();
-// Set the default timeout in case we have a connection pool 
starvation to 30sec
-clientParams.setConnectionManagerTimeout(3);
-httpClient.setParams(clientParams);
-configContext.setProperty(HTTPConstants.CACHED_HTTP_CLIENT, 
httpClient);
-}
+}
+if (httpClient != null) {
+return httpClient;
+}
 
-// Get the timeout values set in the runtime
-initializeTimeouts(msgContext, httpClient);
+HttpConnectionManager connManager =
+(HttpConnectionManager) msgContext.getProperty(
+ HTTPConstants.MULTITHREAD_HTTP_CONNECTION_MANAGER);
+if (connManager == null) {
+connManager =
+(HttpConnectionManager) msgContext.getProperty(
+ HTTPConstants.MUTTITHREAD_HTTP_CONNECTION_MANAGER);
+}
+if (connManager == null) {
+// reuse HttpConnectionManager
+synchronized (configContext) {
+connManager = (HttpConnectionManager) 
configContext.getProperty(
+   
HTTPConstants.MULTITHREAD_HTTP_CONNECTION_MANAGER);
+if (connManager == null) {
+log.trace("Making new ConnectionManager");
+connManager = new MultiThreadedHttpConnectionManager();
+/* 
+ * Commented out for now as bugs in other parts of Axis2 
cause test failures when
+ * proper connection reuse is enabled. 
+ */
+// 
configContext.setProperty(HTTPConstants.MULTITHREAD_HTTP_CONNECTION_MANAGER, 
+//   connManager);
+}
+