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) {


Reply via email to