[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