[jboss-svn-commits] JBL Code SVN: r29127 - in labs/jbossesb/workspace/platform/JBESB_4_4_SOA_4_3_GA/product: rosetta/src/org/jboss/soa/esb/http and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Aug 31 22:24:02 EDT 2009
Author: tcunning
Date: 2009-08-31 22:24:02 -0400 (Mon, 31 Aug 2009)
New Revision: 29127
Added:
labs/jbossesb/workspace/platform/JBESB_4_4_SOA_4_3_GA/product/rosetta/src/org/jboss/soa/esb/http/configurators/Connection.java
Modified:
labs/jbossesb/workspace/platform/JBESB_4_4_SOA_4_3_GA/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java
labs/jbossesb/workspace/platform/JBESB_4_4_SOA_4_3_GA/product/rosetta/src/org/jboss/soa/esb/http/HttpClientFactory.java
labs/jbossesb/workspace/platform/JBESB_4_4_SOA_4_3_GA/product/samples/quickstarts/https_2way_ssl/HttpRouter-localhost-https-9433.properties
labs/jbossesb/workspace/platform/JBESB_4_4_SOA_4_3_GA/product/tools/jonplugin/src/main/resources/META-INF/rhq-plugin.xml
Log:
Merge 4.4.0.GA_CP3_CR9 into SOA branch
Modified: labs/jbossesb/workspace/platform/JBESB_4_4_SOA_4_3_GA/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java
===================================================================
--- labs/jbossesb/workspace/platform/JBESB_4_4_SOA_4_3_GA/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java 2009-09-01 01:30:45 UTC (rev 29126)
+++ labs/jbossesb/workspace/platform/JBESB_4_4_SOA_4_3_GA/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java 2009-09-01 02:24:02 UTC (rev 29127)
@@ -65,6 +65,7 @@
private static final boolean RETURN_STACK_TRACES ;
private static final Logger LOGGER = Logger.getLogger(BaseWebService.class);
+ private static final javax.xml.soap.MessageFactory SOAP_MESSAGE_FACTORY ;
protected final ServiceInvoker serviceInvoker ;
@@ -76,6 +77,11 @@
public SOAPMessage invoke(final SOAPMessage request)
{
+ if (SOAP_MESSAGE_FACTORY == null)
+ {
+ throw new WebServiceException("Failed to instantiate SOAP Message Factory") ;
+ }
+
final Message esbReq = MessageFactory.getInstance().getMessage() ;
try
{
@@ -121,14 +127,14 @@
final Document respDoc = YADOMUtil.parseStream(new ByteArrayInputStream(soapRes.getBytes()),
false, false, true);
- final SOAPMessage response = javax.xml.soap.MessageFactory.newInstance().createMessage();
+ final SOAPMessage response = SOAP_MESSAGE_FACTORY.createMessage();
response.getSOAPBody().addDocument(respDoc) ;
return response ;
}
else
{
// We should be able to return null here but this causes JBossWS to NPE.
- return javax.xml.soap.MessageFactory.newInstance().createMessage();
+ return SOAP_MESSAGE_FACTORY.createMessage();
}
}
catch (final WebServiceException wse)
@@ -153,7 +159,7 @@
if (faultCode != null)
{
- faultMsg = javax.xml.soap.MessageFactory.newInstance().createMessage() ;
+ faultMsg = SOAP_MESSAGE_FACTORY.createMessage() ;
final SOAPFault fault = faultMsg.getSOAPBody().addFault(faultCode, faultDescription) ;
if (faultDetail != null)
{
@@ -194,7 +200,7 @@
private SOAPMessage generateFault(final Throwable th)
throws SOAPException
{
- final SOAPMessage faultMsg = javax.xml.soap.MessageFactory.newInstance().createMessage() ;
+ final SOAPMessage faultMsg = SOAP_MESSAGE_FACTORY.createMessage() ;
if (RETURN_STACK_TRACES)
{
final StringWriter sw = new StringWriter() ;
@@ -219,5 +225,16 @@
final PropertyManager propertyManager = ModulePropertyManager.getPropertyManager(ModulePropertyManager.TRANSPORTS_MODULE) ;
final String returnStackTraces = propertyManager.getProperty(Environment.WS_RETURN_STACK_TRACE);
RETURN_STACK_TRACES = Boolean.parseBoolean(returnStackTraces) ;
+
+ javax.xml.soap.MessageFactory soapMessageFactory = null ;
+ try
+ {
+ soapMessageFactory = javax.xml.soap.MessageFactory.newInstance() ;
+ }
+ catch (final SOAPException soape)
+ {
+ LOGGER.error("Could not instantiate SOAP Message Factory", soape) ;
+ }
+ SOAP_MESSAGE_FACTORY = soapMessageFactory ;
}
}
Modified: labs/jbossesb/workspace/platform/JBESB_4_4_SOA_4_3_GA/product/rosetta/src/org/jboss/soa/esb/http/HttpClientFactory.java
===================================================================
--- labs/jbossesb/workspace/platform/JBESB_4_4_SOA_4_3_GA/product/rosetta/src/org/jboss/soa/esb/http/HttpClientFactory.java 2009-09-01 01:30:45 UTC (rev 29126)
+++ labs/jbossesb/workspace/platform/JBESB_4_4_SOA_4_3_GA/product/rosetta/src/org/jboss/soa/esb/http/HttpClientFactory.java 2009-09-01 02:24:02 UTC (rev 29127)
@@ -21,13 +21,13 @@
import org.jboss.soa.esb.ConfigurationException;
import org.jboss.soa.esb.http.configurators.HttpProtocol;
+import org.jboss.soa.esb.http.configurators.Connection;
import org.jboss.soa.esb.util.ClassUtil;
import org.jboss.internal.soa.esb.assertion.AssertArgument;
import org.jboss.internal.soa.esb.util.StreamUtils;
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 java.util.Properties;
import java.io.IOException;
@@ -45,6 +45,7 @@
public static final String TARGET_HOST_URL = "target-host-url";
/**
* Max total connections.
+ * @deprecated
*/
public static final String MAX_TOTAL_CONNECTIONS = "max-total-connections";
@@ -59,19 +60,7 @@
public static HttpClient createHttpClient(Properties properties) throws ConfigurationException {
AssertArgument.isNotNull(properties, "properties");
- final HttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager() ;
- final String maxTotalConnections = properties.getProperty(MAX_TOTAL_CONNECTIONS) ;
- if (maxTotalConnections != null) {
- final HttpConnectionManagerParams params = new HttpConnectionManagerParams() ;
- try {
- params.setMaxTotalConnections(Integer.parseInt(maxTotalConnections)) ;
- } catch (final NumberFormatException nfe) {
- throw new ConfigurationException("Invalid " + MAX_TOTAL_CONNECTIONS + " property: " + maxTotalConnections) ;
- }
- connectionManager.setParams(params) ;
- }
-
- HttpClient httpClient = new HttpClient(connectionManager);
+ HttpClient httpClient = new HttpClient();
String fileConfig = (String) properties.remove("file");
String[] configurators;
@@ -83,6 +72,10 @@
}
}
+ // Apply the mandatory Configurators...
+ new Connection().configure(httpClient, properties);
+
+ // Apply the optional (configured) Configurators...
configurators = properties.getProperty("configurators", HttpProtocol.class.getName()).split(",");
for(String configuratorClass : configurators) {
Configurator configurator = createConfigurator(configuratorClass.trim());
Copied: labs/jbossesb/workspace/platform/JBESB_4_4_SOA_4_3_GA/product/rosetta/src/org/jboss/soa/esb/http/configurators/Connection.java (from rev 29125, labs/jbossesb/tags/JBESB_4_4_GA_CP3_CR9/product/rosetta/src/org/jboss/soa/esb/http/configurators/Connection.java)
===================================================================
--- labs/jbossesb/workspace/platform/JBESB_4_4_SOA_4_3_GA/product/rosetta/src/org/jboss/soa/esb/http/configurators/Connection.java (rev 0)
+++ labs/jbossesb/workspace/platform/JBESB_4_4_SOA_4_3_GA/product/rosetta/src/org/jboss/soa/esb/http/configurators/Connection.java 2009-09-01 02:24:02 UTC (rev 29127)
@@ -0,0 +1,122 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., 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.
+ *
+ * (C) 2005-2006, JBoss Inc.
+ */
+package org.jboss.soa.esb.http.configurators;
+
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.ProxyHost;
+import org.apache.commons.httpclient.HttpConnectionManager;
+import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
+import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
+import org.apache.commons.httpclient.contrib.ssl.StrictSSLProtocolSocketFactory;
+import org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory;
+import org.apache.commons.httpclient.protocol.Protocol;
+import org.apache.commons.httpclient.protocol.ProtocolSocketFactory;
+import org.apache.commons.ssl.KeyMaterial;
+import org.apache.commons.ssl.SSLClient;
+import org.apache.log4j.Logger;
+import org.jboss.soa.esb.ConfigurationException;
+import org.jboss.soa.esb.http.Configurator;
+import org.jboss.soa.esb.http.protocol.ProtocolSocketFactoryBuilder;
+import org.jboss.soa.esb.util.ClassUtil;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.security.GeneralSecurityException;
+import java.security.KeyManagementException;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
+import java.security.cert.CertificateException;
+import java.util.Properties;
+
+/**
+ * HTTP Connection configurator.
+ * <p/>
+ * This {@link Configurator} is always applied to HttpClient instances created by the
+ * {@link org.jboss.soa.esb.http.HttpClientFactory}. Of course, if you wish to make the
+ * connection configurations in a different way, you can always create a custom {@link Configurator}
+ * that creates and attches a different {@link HttpConnectionManager} instance that has differnt
+ * configurations.
+ * <p/>
+ * Properties:
+ * <ul>
+ * <li><b>max-total-connections</b>: Maximum total number of connection for the HttpClient instance.</li>
+ * <li><b>max-connections-per-host</b>: Maximum connection per target host for the HttpClient instance. Note that
+ * the default value for this configuration is 2. So, configuring the "max-total-connections" property
+ * without also configuring this property will have little effect on performance for a single host
+ * because it will only ever open a max of 2 connections (as per the default).
+ * </li>
+ * </ul>
+ * <p/>
+ *
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+public class Connection extends Configurator {
+
+ private Logger logger = Logger.getLogger(Connection.class);
+ /**
+ * Max total connections.
+ */
+ public static final String MAX_TOTAL_CONNECTIONS = "max-total-connections";
+ /**
+ * Max connections per host.
+ */
+ 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 String maxTotalConnections = properties.getProperty(MAX_TOTAL_CONNECTIONS) ;
+ final String maxConnectionsPerHost = properties.getProperty(MAX_CONNECTIONS_PER_HOST) ;
+
+ if (maxTotalConnections != null) {
+ final HttpConnectionManagerParams params = getConnectionManagerParams(connectionManager);
+ try {
+ params.setMaxTotalConnections(Integer.parseInt(maxTotalConnections.trim())) ;
+ } catch (final NumberFormatException nfe) {
+ throw new ConfigurationException("Invalid " + MAX_TOTAL_CONNECTIONS + " property: " + maxTotalConnections) ;
+ }
+ }
+
+ if (maxConnectionsPerHost != null) {
+ final HttpConnectionManagerParams params = getConnectionManagerParams(connectionManager);
+ try {
+ params.setMaxConnectionsPerHost(httpClient.getHostConfiguration(), Integer.parseInt(maxConnectionsPerHost.trim()));
+ } catch (final NumberFormatException nfe) {
+ throw new ConfigurationException("Invalid " + MAX_CONNECTIONS_PER_HOST + " property: " + maxConnectionsPerHost) ;
+ }
+ }
+
+ httpClient.setHttpConnectionManager(connectionManager);
+ }
+
+ private HttpConnectionManagerParams getConnectionManagerParams(HttpConnectionManager connectionManager) {
+ HttpConnectionManagerParams params = connectionManager.getParams();
+
+ if(params == null) {
+ params = new HttpConnectionManagerParams();
+ connectionManager.setParams(params) ;
+ }
+
+ return params;
+ }
+}
\ No newline at end of file
Modified: labs/jbossesb/workspace/platform/JBESB_4_4_SOA_4_3_GA/product/samples/quickstarts/https_2way_ssl/HttpRouter-localhost-https-9433.properties
===================================================================
--- labs/jbossesb/workspace/platform/JBESB_4_4_SOA_4_3_GA/product/samples/quickstarts/https_2way_ssl/HttpRouter-localhost-https-9433.properties 2009-09-01 01:30:45 UTC (rev 29126)
+++ labs/jbossesb/workspace/platform/JBESB_4_4_SOA_4_3_GA/product/samples/quickstarts/https_2way_ssl/HttpRouter-localhost-https-9433.properties 2009-09-01 02:24:02 UTC (rev 29127)
@@ -13,3 +13,6 @@
keystore-passw=https_2way_ssl_pass
truststore=@keystore@
truststore-passw=https_2way_ssl_pass
+
+# Connection config
+max-connections-per-host=5
Modified: labs/jbossesb/workspace/platform/JBESB_4_4_SOA_4_3_GA/product/tools/jonplugin/src/main/resources/META-INF/rhq-plugin.xml
===================================================================
--- labs/jbossesb/workspace/platform/JBESB_4_4_SOA_4_3_GA/product/tools/jonplugin/src/main/resources/META-INF/rhq-plugin.xml 2009-09-01 01:30:45 UTC (rev 29126)
+++ labs/jbossesb/workspace/platform/JBESB_4_4_SOA_4_3_GA/product/tools/jonplugin/src/main/resources/META-INF/rhq-plugin.xml 2009-09-01 02:24:02 UTC (rev 29127)
@@ -10,7 +10,6 @@
xmlns:c="urn:xmlns:rhq-configuration">
<depends plugin="JMX" />
- <depends plugin="Tomcat" />
<depends plugin="JBossAS" useClasses="true"/>
<service name="ESB"
More information about the jboss-svn-commits
mailing list