Author: ffang
Date: Sun Jul 27 19:45:41 2008
New Revision: 680227
URL: http://svn.apache.org/viewvc?rev=680227&view=rev
Log:
[SM-1478]ServiceMix http binding component should allow option to create jetty
Client per HttpProvider
Modified:
servicemix/components/bindings/servicemix-http/trunk/src/main/java/org/apache/servicemix/http/HttpComponent.java
servicemix/components/bindings/servicemix-http/trunk/src/main/java/org/apache/servicemix/http/HttpConfiguration.java
servicemix/components/bindings/servicemix-http/trunk/src/main/java/org/apache/servicemix/http/HttpConfigurationMBean.java
servicemix/components/bindings/servicemix-http/trunk/src/main/java/org/apache/servicemix/http/endpoints/HttpProviderEndpoint.java
Modified:
servicemix/components/bindings/servicemix-http/trunk/src/main/java/org/apache/servicemix/http/HttpComponent.java
URL:
http://svn.apache.org/viewvc/servicemix/components/bindings/servicemix-http/trunk/src/main/java/org/apache/servicemix/http/HttpComponent.java?rev=680227&r1=680226&r2=680227&view=diff
==============================================================================
---
servicemix/components/bindings/servicemix-http/trunk/src/main/java/org/apache/servicemix/http/HttpComponent.java
(original)
+++
servicemix/components/bindings/servicemix-http/trunk/src/main/java/org/apache/servicemix/http/HttpComponent.java
Sun Jul 27 19:45:41 2008
@@ -162,6 +162,17 @@
return connectionPool;
}
+ public org.mortbay.jetty.client.HttpClient getNewJettyClient(HttpComponent
comp) throws Exception {
+ org.mortbay.jetty.client.HttpClient tempClient = new
org.mortbay.jetty.client.HttpClient();
+ BoundedThreadPool btp = new BoundedThreadPool();
+
btp.setMaxThreads(comp.getConfiguration().getJettyClientThreadPoolSize());
+ tempClient.setThreadPool(btp);
+ tempClient.setConnectorType
+ (org.mortbay.jetty.client.HttpClient.CONNECTOR_SELECT_CHANNEL);
+ tempClient.start();
+ return tempClient;
+ }
+
public void setConnectionPool(org.mortbay.jetty.client.HttpClient
connectionPool) {
this.connectionPool = connectionPool;
}
@@ -228,12 +239,7 @@
}
// Create connectionPool
if (connectionPool == null) {
- connectionPool = new org.mortbay.jetty.client.HttpClient();
- BoundedThreadPool btp = new BoundedThreadPool();
-
btp.setMaxThreads(this.configuration.getJettyClientThreadPoolSize());
- connectionPool.setThreadPool(btp);
-
connectionPool.setConnectorType(org.mortbay.jetty.client.HttpClient.CONNECTOR_SELECT_CHANNEL);
- connectionPool.start();
+ connectionPool = getNewJettyClient(this);
}
// Create serverManager
if (configuration.isManaged()) {
@@ -246,6 +252,7 @@
server.setConfiguration(configuration);
server.init();
}
+
protected void doShutDown() throws Exception {
super.doShutDown();
Modified:
servicemix/components/bindings/servicemix-http/trunk/src/main/java/org/apache/servicemix/http/HttpConfiguration.java
URL:
http://svn.apache.org/viewvc/servicemix/components/bindings/servicemix-http/trunk/src/main/java/org/apache/servicemix/http/HttpConfiguration.java?rev=680227&r1=680226&r2=680227&view=diff
==============================================================================
---
servicemix/components/bindings/servicemix-http/trunk/src/main/java/org/apache/servicemix/http/HttpConfiguration.java
(original)
+++
servicemix/components/bindings/servicemix-http/trunk/src/main/java/org/apache/servicemix/http/HttpConfiguration.java
Sun Jul 27 19:45:41 2008
@@ -66,6 +66,13 @@
*/
private int jettyClientThreadPoolSize = 16;
+ /**
+ * Configuration to switch from shared jetty client for all
HttpProviderEndpoints to
+ * jetty client per HttpProviderEndpoint. It's default value is false.
+ */
+
+ private boolean jettyClientPerProvider;
+
/**
* Maximum number of concurrent requests to the same host.
*/
@@ -300,6 +307,15 @@
this.jettyClientThreadPoolSize = jettyClientThreadPoolSize;
save();
}
+
+ public boolean isJettyClientPerProvider() {
+ return jettyClientPerProvider;
+ }
+
+ public void setJettyClientPerProvider(boolean jettyClientPerProvider) {
+ this.jettyClientPerProvider = jettyClientPerProvider;
+ save();
+ }
public int getMaxConnectionsPerHost() {
return maxConnectionsPerHost;
@@ -401,6 +417,7 @@
public void save() {
setProperty(componentName + ".jettyThreadPoolSize",
Integer.toString(jettyThreadPoolSize));
setProperty(componentName + ".jettyClientThreadPoolSize",
Integer.toString(jettyClientThreadPoolSize));
+ setProperty(componentName + ".jettyClientPerProvider",
Boolean.toString(jettyClientPerProvider));
setProperty(componentName + ".jettyConnectorClassName",
jettyConnectorClassName);
setProperty(componentName + ".streamingEnabled",
Boolean.toString(streamingEnabled));
setProperty(componentName + ".maxConnectionsPerHost",
Integer.toString(maxConnectionsPerHost));
@@ -465,6 +482,9 @@
if (properties.getProperty(componentName +
".jettyClientThreadPoolSize") != null) {
jettyClientThreadPoolSize =
Integer.parseInt(properties.getProperty(componentName +
".jettyClientThreadPoolSize"));
}
+ if (properties.getProperty(componentName + ".jettyClientPerProvider")
!= null) {
+ jettyClientPerProvider =
Boolean.valueOf(properties.getProperty(componentName +
".jettyClientPerProvider")).booleanValue();
+ }
if (properties.getProperty(componentName + ".jettyConnectorClassName")
!= null) {
jettyConnectorClassName = properties.getProperty(componentName +
".jettyConnectorClassName");
}
Modified:
servicemix/components/bindings/servicemix-http/trunk/src/main/java/org/apache/servicemix/http/HttpConfigurationMBean.java
URL:
http://svn.apache.org/viewvc/servicemix/components/bindings/servicemix-http/trunk/src/main/java/org/apache/servicemix/http/HttpConfigurationMBean.java?rev=680227&r1=680226&r2=680227&view=diff
==============================================================================
---
servicemix/components/bindings/servicemix-http/trunk/src/main/java/org/apache/servicemix/http/HttpConfigurationMBean.java
(original)
+++
servicemix/components/bindings/servicemix-http/trunk/src/main/java/org/apache/servicemix/http/HttpConfigurationMBean.java
Sun Jul 27 19:45:41 2008
@@ -33,6 +33,10 @@
int getJettyClientThreadPoolSize();
void setJettyClientThreadPoolSize(int jettyClientThreadPoolSize);
+
+ boolean isJettyClientPerProvider();
+
+ void setJettyClientPerProvider(boolean jettyClientPerProvider);
int getMaxConnectionsPerHost();
Modified:
servicemix/components/bindings/servicemix-http/trunk/src/main/java/org/apache/servicemix/http/endpoints/HttpProviderEndpoint.java
URL:
http://svn.apache.org/viewvc/servicemix/components/bindings/servicemix-http/trunk/src/main/java/org/apache/servicemix/http/endpoints/HttpProviderEndpoint.java?rev=680227&r1=680226&r2=680227&view=diff
==============================================================================
---
servicemix/components/bindings/servicemix-http/trunk/src/main/java/org/apache/servicemix/http/endpoints/HttpProviderEndpoint.java
(original)
+++
servicemix/components/bindings/servicemix-http/trunk/src/main/java/org/apache/servicemix/http/endpoints/HttpProviderEndpoint.java
Sun Jul 27 19:45:41 2008
@@ -32,6 +32,7 @@
import org.apache.servicemix.http.HttpComponent;
import org.apache.servicemix.http.HttpEndpointType;
import org.apache.servicemix.http.jetty.SmxHttpExchange;
+import org.mortbay.jetty.client.HttpClient;
/**
*
@@ -46,6 +47,7 @@
private HttpProviderMarshaler marshaler;
private String locationURI;
private int clientSoTimeout = 60000;
+ private HttpClient jettyClient;
public HttpProviderEndpoint() {
super();
@@ -146,11 +148,18 @@
}
}
- protected org.mortbay.jetty.client.HttpClient getConnectionPool() {
- HttpComponent comp = (HttpComponent) getServiceUnit().getComponent();
- org.mortbay.jetty.client.HttpClient client = comp.getConnectionPool();
- client.setSoTimeout(getClientSoTimeout());
- return client;
+ protected org.mortbay.jetty.client.HttpClient getConnectionPool() throws
Exception {
+ if (jettyClient == null) {
+ HttpComponent comp = (HttpComponent)
getServiceUnit().getComponent();
+ if (comp.getConfiguration().isJettyClientPerProvider()) {
+ jettyClient = comp.getNewJettyClient(comp);
+ } else {
+ //return shared client
+ jettyClient = comp.getConnectionPool();
+ }
+ jettyClient.setSoTimeout(getClientSoTimeout());
+ }
+ return jettyClient;
}
protected class Exchange extends SmxHttpExchange {
@@ -169,14 +178,13 @@
}
}
- public int getClientSoTimeout() {
- return clientSoTimeout;
- }
-
- public void setClientSoTimeout(int clientTimeout) {
- this.clientSoTimeout = clientTimeout;
- }
+ public int getClientSoTimeout() {
+ return clientSoTimeout;
+ }
+ public void setClientSoTimeout(int clientTimeout) {
+ this.clientSoTimeout = clientTimeout;
+ }
public void validate() throws DeploymentException {
super.validate();
if (marshaler == null) {