[jboss-svn-commits] JBL Code SVN: r35532 - in labs/jbossesb/branches/JBESB_4_9_CP/product: rosetta/src/org/jboss/soa/esb/http and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Oct 15 05:23:07 EDT 2010


Author: kevin.conner at jboss.com
Date: 2010-10-15 05:23:05 -0400 (Fri, 15 Oct 2010)
New Revision: 35532

Added:
   labs/jbossesb/branches/JBESB_4_9_CP/product/rosetta/src/org/jboss/soa/esb/http/ESBMultiThreadedHttpConnectionManager.java
Modified:
   labs/jbossesb/branches/JBESB_4_9_CP/product/rosetta/src/org/jboss/soa/esb/actions/routing/http/HttpRouter.java
   labs/jbossesb/branches/JBESB_4_9_CP/product/rosetta/src/org/jboss/soa/esb/http/HttpClientFactory.java
   labs/jbossesb/branches/JBESB_4_9_CP/product/rosetta/src/org/jboss/soa/esb/http/configurators/Connection.java
   labs/jbossesb/branches/JBESB_4_9_CP/product/rosetta/tests/src/org/jboss/soa/esb/http/HttpClientFactoryUnitTest.java
   labs/jbossesb/branches/JBESB_4_9_CP/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/RemoteWsdlLoader.java
   labs/jbossesb/branches/JBESB_4_9_CP/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/SOAPClient.java
   labs/jbossesb/branches/JBESB_4_9_CP/product/services/soapui-client/src/main/java/org/jboss/soa/esb/services/soapui/EsbWsdlLoader.java
Log:
Support Protocol usage: JBESB-3504

Modified: labs/jbossesb/branches/JBESB_4_9_CP/product/rosetta/src/org/jboss/soa/esb/actions/routing/http/HttpRouter.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_9_CP/product/rosetta/src/org/jboss/soa/esb/actions/routing/http/HttpRouter.java	2010-10-15 09:19:55 UTC (rev 35531)
+++ labs/jbossesb/branches/JBESB_4_9_CP/product/rosetta/src/org/jboss/soa/esb/actions/routing/http/HttpRouter.java	2010-10-15 09:23:05 UTC (rev 35532)
@@ -76,7 +76,6 @@
     private ConfigTree config;
     private java.util.Properties httpClientProps = new java.util.Properties();
     private HttpClient httpclient;
-    private HostConfiguration hostconfig;
     private URL endpointUrl;
     private String method;
     private HttpMethodFactory methodFactory;
@@ -113,11 +112,6 @@
         extractHttpClientProps(config);
         httpclient = HttpClientFactory.createHttpClient(httpClientProps);
         
-        // JBESB-3021: we need to hold onto the configured HostConfiguration then replace it with a dummy instance because
-        // executeMethod overrides the Protocol on us with one from a static (yuck!) map if the instances are the same!
-        hostconfig = httpclient.getHostConfiguration();
-        httpclient.setHostConfiguration(new HostConfiguration());
-        
         method = config.getRequiredAttribute("method");
         
         responseType = ResponseType.valueOf(config.getAttribute("responseType", ResponseType.STRING.toString()));
@@ -153,8 +147,7 @@
             try {
                 setRequestHeaders(method, message);
                 
-                // JBESB-3021: use the hostconfig with the appropriate Protocol
-                int responseCode = httpclient.executeMethod(hostconfig, method);
+                int responseCode = httpclient.executeMethod(method);
                 if(responseCode != HttpStatus.SC_OK) {
                     logger.warn("Received status code '" + responseCode + "' on HTTP " + method + " request to '" + endpointUrl + "'.");
                 }

Added: labs/jbossesb/branches/JBESB_4_9_CP/product/rosetta/src/org/jboss/soa/esb/http/ESBMultiThreadedHttpConnectionManager.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_9_CP/product/rosetta/src/org/jboss/soa/esb/http/ESBMultiThreadedHttpConnectionManager.java	                        (rev 0)
+++ labs/jbossesb/branches/JBESB_4_9_CP/product/rosetta/src/org/jboss/soa/esb/http/ESBMultiThreadedHttpConnectionManager.java	2010-10-15 09:23:05 UTC (rev 35532)
@@ -0,0 +1,105 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat Middleware LLC, and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ */
+package org.jboss.soa.esb.http;
+
+import org.apache.commons.httpclient.ConnectionPoolTimeoutException;
+import org.apache.commons.httpclient.HostConfiguration;
+import org.apache.commons.httpclient.HttpConnection;
+import org.apache.commons.httpclient.HttpException;
+import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
+import org.apache.commons.httpclient.protocol.Protocol;
+
+/**
+ * Connection manager which overrides the host configuration.
+ * @author kevin
+ */
+public class ESBMultiThreadedHttpConnectionManager extends
+    MultiThreadedHttpConnectionManager
+{
+    private HostConfiguration hostConfiguration ;
+    private String scheme ;
+    
+    public void setHostConfiguration(final HostConfiguration hostConfiguration)
+    {
+        this.hostConfiguration = hostConfiguration ;
+        
+        scheme = null ;
+        if (hostConfiguration != null)
+        {
+            final Protocol protocol = hostConfiguration.getProtocol() ;
+            if (protocol != null)
+            {
+                scheme = protocol.getScheme() ;
+            }
+        }
+    }
+    
+    public HostConfiguration getHostConfiguration()
+    {
+        return hostConfiguration ;
+    }
+    
+    @Override
+    public HttpConnection getConnection(final HostConfiguration hostConfiguration)
+    {
+        return super.getConnection(getHostConfiguration(hostConfiguration)) ;
+    }
+    
+    @Override
+    public HttpConnection getConnection(final HostConfiguration hostConfiguration, final long timeout)
+        throws HttpException
+    {
+        return super.getConnection(getHostConfiguration(hostConfiguration), timeout) ;
+    }
+    
+    @Override
+    public HttpConnection getConnectionWithTimeout(final HostConfiguration hostConfiguration, final long timeout)
+        throws ConnectionPoolTimeoutException
+    {
+        return super.getConnectionWithTimeout(getHostConfiguration(hostConfiguration), timeout) ;
+    }
+    
+    @Override
+    public int getConnectionsInPool(final HostConfiguration hostConfiguration)
+    {
+        return super.getConnectionsInPool(getHostConfiguration(hostConfiguration));
+    }
+
+    @Override
+    public int getConnectionsInUse(final HostConfiguration hostConfiguration)
+    {
+        return super.getConnectionsInUse(getHostConfiguration(hostConfiguration));
+    }
+    
+    private HostConfiguration getHostConfiguration(final HostConfiguration hostConfiguration)
+    {
+        if (this.hostConfiguration != null)
+        {
+            // If we are the same scheme than make sure we use our socket factory
+            if ((scheme != null) && scheme.equals(hostConfiguration.getProtocol().getScheme()))
+            {
+                final HostConfiguration newConfiguration = new HostConfiguration(hostConfiguration) ;
+                final String host = hostConfiguration.getHost() ;
+                final int port = hostConfiguration.getPort() ;
+                newConfiguration.setHost(host, port, this.hostConfiguration.getProtocol()) ;
+                return newConfiguration ;
+            }
+        }
+        return hostConfiguration ;
+    }
+}


Property changes on: labs/jbossesb/branches/JBESB_4_9_CP/product/rosetta/src/org/jboss/soa/esb/http/ESBMultiThreadedHttpConnectionManager.java
___________________________________________________________________
Name: svn:keywords
   + Rev Date
Name: svn:eol-style
   + native

Modified: labs/jbossesb/branches/JBESB_4_9_CP/product/rosetta/src/org/jboss/soa/esb/http/HttpClientFactory.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_9_CP/product/rosetta/src/org/jboss/soa/esb/http/HttpClientFactory.java	2010-10-15 09:19:55 UTC (rev 35531)
+++ labs/jbossesb/branches/JBESB_4_9_CP/product/rosetta/src/org/jboss/soa/esb/http/HttpClientFactory.java	2010-10-15 09:23:05 UTC (rev 35532)
@@ -85,6 +85,12 @@
         	}
         }
 
+        final HttpConnectionManager connectionManager = httpClient.getHttpConnectionManager();
+        if (connectionManager instanceof ESBMultiThreadedHttpConnectionManager) {
+            final ESBMultiThreadedHttpConnectionManager esbMultiThreadedHttpConnectionManager = (ESBMultiThreadedHttpConnectionManager)connectionManager;
+            esbMultiThreadedHttpConnectionManager.setHostConfiguration(httpClient.getHostConfiguration()) ;
+        }
+        
         return httpClient;
     }
 

Modified: labs/jbossesb/branches/JBESB_4_9_CP/product/rosetta/src/org/jboss/soa/esb/http/configurators/Connection.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_9_CP/product/rosetta/src/org/jboss/soa/esb/http/configurators/Connection.java	2010-10-15 09:19:55 UTC (rev 35531)
+++ labs/jbossesb/branches/JBESB_4_9_CP/product/rosetta/src/org/jboss/soa/esb/http/configurators/Connection.java	2010-10-15 09:23:05 UTC (rev 35532)
@@ -24,10 +24,10 @@
 import org.apache.commons.httpclient.HostConfiguration;
 import org.apache.commons.httpclient.HttpClient;
 import org.apache.commons.httpclient.HttpConnectionManager;
-import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
 import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
 import org.jboss.soa.esb.ConfigurationException;
 import org.jboss.soa.esb.http.Configurator;
+import org.jboss.soa.esb.http.ESBMultiThreadedHttpConnectionManager;
 
 /**
  * HTTP Connection configurator.
@@ -63,7 +63,7 @@
     public static final String MAX_CONNECTIONS_PER_HOST = "max-connections-per-host";
 
     public void configure(HttpClient httpClient, Properties properties) throws ConfigurationException {
-        final HttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager() ;
+        final HttpConnectionManager connectionManager = new ESBMultiThreadedHttpConnectionManager() ;
         final String maxTotalConnections = properties.getProperty(MAX_TOTAL_CONNECTIONS) ;
         final String maxConnectionsPerHost = properties.getProperty(MAX_CONNECTIONS_PER_HOST) ;
 

Modified: labs/jbossesb/branches/JBESB_4_9_CP/product/rosetta/tests/src/org/jboss/soa/esb/http/HttpClientFactoryUnitTest.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_9_CP/product/rosetta/tests/src/org/jboss/soa/esb/http/HttpClientFactoryUnitTest.java	2010-10-15 09:19:55 UTC (rev 35531)
+++ labs/jbossesb/branches/JBESB_4_9_CP/product/rosetta/tests/src/org/jboss/soa/esb/http/HttpClientFactoryUnitTest.java	2010-10-15 09:23:05 UTC (rev 35532)
@@ -28,6 +28,7 @@
 
 import org.apache.commons.httpclient.HostConfiguration;
 import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpConnectionManager;
 import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
 import org.jboss.soa.esb.http.configurators.Connection;
 import org.junit.Test;
@@ -102,15 +103,23 @@
             {
                 final HostConfiguration firstConfiguration = firstHttpClient.getHostConfiguration() ;
                 final HttpConnectionManagerParams firstParams = firstHttpClient.getHttpConnectionManager().getParams() ;
+                final HttpConnectionManager firstConnectionManager = firstHttpClient.getHttpConnectionManager() ;
                 
                 assertEquals("MAX_TOTAL_CONNECTIONS not set", firstMaxTotalConnections, firstParams.getMaxTotalConnections()) ;
                 assertEquals("MAX_CONNECTIONS_PER_HOST not set", firstMaxConnectionsPerHost, firstParams.getMaxConnectionsPerHost(firstConfiguration)) ;
+                assertNotNull("connection manager is null", firstConnectionManager) ;
+                assertEquals("connection manager is not correct type", ESBMultiThreadedHttpConnectionManager.class, firstConnectionManager.getClass()) ;
+                assertNotNull("HostConfiguration is null", ((ESBMultiThreadedHttpConnectionManager)firstConnectionManager).getHostConfiguration()) ;
                 
                 final HostConfiguration secondConfiguration = secondHttpClient.getHostConfiguration() ;
                 final HttpConnectionManagerParams secondParams = secondHttpClient.getHttpConnectionManager().getParams() ;
+                final HttpConnectionManager secondConnectionManager = secondHttpClient.getHttpConnectionManager() ;
                 
                 assertEquals("MAX_TOTAL_CONNECTIONS not set", secondMaxTotalConnections, secondParams.getMaxTotalConnections()) ;
                 assertEquals("MAX_CONNECTIONS_PER_HOST not set", secondMaxConnectionsPerHost, secondParams.getMaxConnectionsPerHost(secondConfiguration)) ;
+                assertNotNull("connection manager is null", secondConnectionManager) ;
+                assertEquals("connection manager is not correct type", ESBMultiThreadedHttpConnectionManager.class, secondConnectionManager.getClass()) ;
+                assertNotNull("HostConfiguration is null", ((ESBMultiThreadedHttpConnectionManager)secondConnectionManager).getHostConfiguration()) ;
             }
             finally
             {

Modified: labs/jbossesb/branches/JBESB_4_9_CP/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/RemoteWsdlLoader.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_9_CP/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/RemoteWsdlLoader.java	2010-10-15 09:19:55 UTC (rev 35531)
+++ labs/jbossesb/branches/JBESB_4_9_CP/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/RemoteWsdlLoader.java	2010-10-15 09:23:05 UTC (rev 35532)
@@ -52,13 +52,10 @@
 
     private static Logger logger = Logger.getLogger(RemoteWsdlLoader.class);
     private HttpClient httpClient;
-    private HostConfiguration hostConfig;
     private ConfigTree config;
 
     public RemoteWsdlLoader(Properties httpClientProps) throws ConfigurationException {
         httpClient = HttpClientFactory.createHttpClient(httpClientProps);
-        hostConfig = httpClient.getHostConfiguration();
-        httpClient.setHostConfiguration(new HostConfiguration());
         this.config = generateConfig(httpClientProps);
     }
 
@@ -90,7 +87,7 @@
             httpMethod.setDoAuthentication(true);
 
             try {
-            	int result = httpClient.executeMethod(hostConfig, httpMethod);
+            	int result = httpClient.executeMethod(httpMethod);
 
                 if(result != HttpStatus.SC_OK) {
                     if(result < 200 || result > 299) {

Modified: labs/jbossesb/branches/JBESB_4_9_CP/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/SOAPClient.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_9_CP/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/SOAPClient.java	2010-10-15 09:19:55 UTC (rev 35531)
+++ labs/jbossesb/branches/JBESB_4_9_CP/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/SOAPClient.java	2010-10-15 09:23:05 UTC (rev 35532)
@@ -293,7 +293,6 @@
     private QNameMap responseXStreamQNameMap = new QNameMap();
     private Properties httpClientProps = new Properties();
     private HttpClient httpclient;
-    private HostConfiguration hostconfig;
     private String endpoint;
     private String endpointUrl;
     private String contentType;
@@ -330,9 +329,6 @@
         // to the HttpClientFacatory...
         extractHttpClientProps(config);
         httpclient = HttpClientFactory.createHttpClient(httpClientProps);
-        // see JBESB-3021 for details of the host configuration changes
-        hostconfig = httpclient.getHostConfiguration();
-        httpclient.setHostConfiguration(new HostConfiguration());
 
         endpointUrl = config.getAttribute("endpointUrl");
 
@@ -525,7 +521,7 @@
         post.setRequestHeader("SOAPAction", "\"" + soapAction + "\"");  /// Customization to add quotes to Soap action
         try {
         	post.setRequestEntity(new StringRequestEntity(request, "text/xml", "UTF-8"));
-            int result = httpclient.executeMethod(hostconfig, post);
+            int result = httpclient.executeMethod(post);
             if(result != HttpStatus.SC_OK) {
                 // TODO: We need to do more here!!
 

Modified: labs/jbossesb/branches/JBESB_4_9_CP/product/services/soapui-client/src/main/java/org/jboss/soa/esb/services/soapui/EsbWsdlLoader.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_9_CP/product/services/soapui-client/src/main/java/org/jboss/soa/esb/services/soapui/EsbWsdlLoader.java	2010-10-15 09:19:55 UTC (rev 35531)
+++ labs/jbossesb/branches/JBESB_4_9_CP/product/services/soapui-client/src/main/java/org/jboss/soa/esb/services/soapui/EsbWsdlLoader.java	2010-10-15 09:23:05 UTC (rev 35532)
@@ -43,14 +43,10 @@
 
     private boolean isAborted = false;
     private HttpClient httpClient;
-    private HostConfiguration hostconfig;
     
     public EsbWsdlLoader(String url, HttpClient httpClient) {
         super(url);
         this.httpClient = httpClient;
-        // see JBESB-3021 for details of the host configuration changes
-        hostconfig = httpClient.getHostConfiguration();
-        httpClient.setHostConfiguration(new HostConfiguration());
     }
 
     public InputStream load(String url) throws Exception {
@@ -69,7 +65,7 @@
         httpGetMethod.setRequestHeader("Connection", "keep-alive");
 
         try {
-            int result = httpClient.executeMethod(hostconfig, httpGetMethod);
+            int result = httpClient.executeMethod(httpGetMethod);
 
             if(result != HttpStatus.SC_OK) {
                 if(result < 200 || result > 299) {



More information about the jboss-svn-commits mailing list