[esb-issues] [JBoss JIRA] Closed: (JBESB-3356) maxThreads does not adequately propagate to HttpClient in HttpRouter, SOAPClient and SOAPProxy

David Ward (JIRA) jira-events at lists.jboss.org
Mon Jun 21 17:07:46 EDT 2010


     [ https://jira.jboss.org/browse/JBESB-3356?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

David Ward closed JBESB-3356.
-----------------------------

    Resolution: Done


Now, in all 3 cases (HttpRouter, SOAPClient and SOAPProxy), the HttpClient properties "max-total-connections" and "max-connections-per-host" will both DEFAULT to the value of maxThreads so the user doesn't have to set those properties themselves.  This is good for the straightforward cases.

For advanced configuration or performance tuning, the user can STILL override those properties individually, either in jboss-esb.xml or in a referenced properties file.  For example:

<action class="...SOAPProxy" ...>
    ...
    <property name="http-client-properties">
        <http-client-property name="max-total-connections" value="#"/>
        <http-client-property name="max-connections-per-host" value="#"/>
    </property>

or this:

<action class="...SOAPProxy" ...>
    ...
    <property name="file" value="/file-containing-those-props.properties"/> 

or this:

<action class="...SOAPClient" ...>
    ...
    <property name="http-client-properties">
        <http-client-property name="file" value="/file-containing-those-props.properties"/>
    </property>

[trunk]$ svn commit
Sending        product/rosetta/src/org/jboss/soa/esb/actions/routing/http/HttpRouter.java
Sending        product/rosetta/src/org/jboss/soa/esb/helpers/ConfigTree.java
Sending        product/rosetta/src/org/jboss/soa/esb/http/HttpClientFactory.java
Sending        product/rosetta/src/org/jboss/soa/esb/http/configurators/Connection.java
Sending        product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/SOAPClient.java
Sending        product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/proxy/HttpSOAPProxyTransport.java
Sending        product/services/soap/src/test/java/org/jboss/soa/esb/actions/soap/proxy/SOAPProxyUnitTest.java
Transmitting file data .......
Committed revision 33577.

> maxThreads does not adequately propagate to HttpClient in HttpRouter, SOAPClient and SOAPProxy
> ----------------------------------------------------------------------------------------------
>
>                 Key: JBESB-3356
>                 URL: https://jira.jboss.org/browse/JBESB-3356
>             Project: JBoss ESB
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: Configuration, Web Services
>    Affects Versions: 4.8
>            Reporter: David Ward
>            Assignee: David Ward
>             Fix For: 4.9
>
>
> First, some background:
> If one is trying to set the maxThreads for INVM invocation of a Service (where invmScope="GLOBAL"), then one would do it like so:
> <service .... invmScope="GLOBAL">
>     <property name="maxThreads" value="#"/>
>     ....
> If one is trying to set the maxThreads for an ESB *aware* Listener's invocation of a Service, then one would do it like so:
> <service ...>
>     <listeners>
>         <xxx-listener ...>
>             <property name="maxThreads" value="#"/>
> In each of these cases, an action can look for the maxThreads via it's passed in ConfigTree's parent:
>     config.getParent().getAttribute(ListenerTagNames.MAX_THREADS_TAG).
> The HttpRouter takes advantage of this and *defaults* the max-total-connections property it hands to HttpClient to the value of the parent ConfigTree's maxThreads.
> Now, the problems:
> 1) HttpRouter only defaults HttpClient's max-total-connections property to the value of maxThreads.  It should also default max-connections-per-host.
> 2) SOAPClient similarly only defaults HttpClient's max-total-connections property to the value of maxThreads.  It should also default max-connections-per-host.
> 3) The SOAPProxy class "HttpSOAPProxyTransport" wraps HttpRouter, and creates it with a ConfigTree.  However, this ConfigTree is a *clone* of the ConfigTree passed into the SOAPProxy, which does *not* have a parent ConfigTree.  Thus, there is no parent to get the maxThreads from.  Because of that, if someone wants to set the max-total-connections and max-connections-per-host, one has to do this:
> <action class="...SOAPProxy" ...>
>     ...
>     <property name="http-client-properties">
>         <http-client-property name="max-total-connections" value="#"/>
>         <http-client-property name="max-connections-per-host" value="#"/>
>     </property>
> or this:
> <action class="...SOAPProxy" ...>
>     ...
>     <property name="file" value="/file-containing-those-props.properties>
> In problems 1 and 2, the user needs to know to set the "max-connections-per-host" property.  In problem 3, the user needs to know to set both the "max-total-connections" and "max-connections-per-host" properties.  If the user doesn't know to do this, they might wonder "why am I getting such bad out-of-the-box performance?"

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the esb-issues mailing list