6 Replies Latest reply on Feb 24, 2012 9:26 AM by tomeicher

    SOAPPROXY  IS NOT PROPAGATING THE HTTPCLIENT PROPERTIES

    munimanjunath

      Hi,

       

      I am setting the following httpclient properties in the soapproxy action  but there these settings are not enforced in esb.  

       

              <action class="org.jboss.soa.esb.actions.soap.proxy.SOAPProxy"

                          name="SourceValidationProxy">

                      <property name="wsdl"

                              value="file:///${wsdlbasedir}/ManageTransactionService.wsdl" />

                              <property name="http-client-properties">

                                          <http-client-property name="http.socket.timeout" value="6000"/>

                              </property>

                      </action>

       

       

      I expected to get a timeout  after 6 seconds   but this is not happpening.  Any help is appreciated.

       

      Thanks

      Muni

        • 1. SOAPPROXY  IS NOT PROPAGATING THE HTTPCLIENT PROPERTIES
          tcunning

          Have you tried specifying a http-client-properties file using the file attribute?    See the webservice_proxy_security quickstart for an example.

          • 2. Re: SOAPPROXY  IS NOT PROPAGATING THE HTTPCLIENT PROPERTIES
            munimanjunath

            Yes I tried to put the settings in  properties file also but no luck. 

             

             

            I created a webservice which go into waitstate then created a proxy with  the above http-client properties settings.   In the proxy I configured both  http.connection.timeout  and http.socket.timeout.

             

            I put those properties in http-client.properties   as well as   within the   client-properties tag  but  there is no socket timeout.  Always  httpgateway  synchronous timeout happening.  

            • 3. SOAPPROXY  IS NOT PROPAGATING THE HTTPCLIENT PROPERTIES
              tcunning

              Maybe set wsdlUseHttpClientProperties to false explicitly?   

               

              Also, have you debugged into httpclient and checked what properties are actually being set?     I would do that for confirmation.

              • 4. SOAPPROXY  IS NOT PROPAGATING THE HTTPCLIENT PROPERTIES
                h.wolffenbuttel

                Hi  munimanjunath kalapati

                 

                The problem which you are having lies probably in the way you have declared your parameters. Because SOAPProxy is nothing more than a wrapper around the HTTPRouter, you have to abide by the same configuration rules. If you want to set any property settings, you have to set them on the 'endpointUrl' property. So this will mean you have to adjust your configuration to something like this:

                 

                 

                <action class="org.jboss.soa.esb.actions.soap.proxy.SOAPProxy"

                                    name="SourceValidationProxy">

                                <property name="wsdl" value="file:///${wsdlbasedir}/ManageTransactionService.wsdl" />

                                <property name="endpointUrl" value="http://www.someEndPoint.com/">

                                            <http-client-property name="http.socket.timeout" value="6000"/>

                                 </property>

                </action>

                 

                Regards,

                 

                Hans

                • 5. Re: SOAPPROXY  IS NOT PROPAGATING THE HTTPCLIENT PROPERTIES
                  tomeicher

                  Hello, the "quickstarts/webservice_proxy_security/jboss-esb-template.xml" mentioned earlier has the "file" on the same level, not below "endpointUrl".

                   

                  <action name="proxy"                
                      class="org.jboss.soa.esb.actions.soap.proxy.SOAPProxy">                
                                  <property name="wsdl" value="internal://jboss.ws:context=webservice_proxy_security,endpoint=HelloWorldWS"/>                
                                  <property name="endpointUrl" value="https://localhost:8443/webservice_proxy_security/HelloWorldWS"/>
                                  <property name="file" value="/META-INF/httpclient-8443.properties"/>
                  </action>
                  
                  

                   

                  which is what "is written everywhere". Your alternative looks good, because it does not require another redirection (another file).

                   

                  However, most "http timeout articles" state that you now need to programm, add and configure a custom protocol Configurer,

                  to again read the timeout params and set them to HttpClient directly. Still testing and debugging...

                   

                  Unbelievable, how complicated it is to put a timeout to a SOAPProxy or HttpRouter...

                   

                  Cheers, Tom.

                   

                  Wrong assumptions fixed

                  • 6. Re: SOAPPROXY  IS NOT PROPAGATING THE HTTPCLIENT PROPERTIES
                    tomeicher

                    It's all in vain.

                    org.jboss.soa.esb.http.HttpClientFactory.createHttpClient(Properties) swallows all but "file", "max-total-connections" and "max-connections-per-host".

                     

                    So we need to either

                    1. add a "file" to ConfigTree

                    2. create the file and deposit the timeout there, and put a custom Configurer in

                    3. build a custom Configurer to read the timeout again from where we just put it

                    4. and set the properties on HttpClient, where they were just filtered out by HttpClientFactory

                    (see https://community.jboss.org/message/644120?tstart=0 )

                     

                    or

                     

                    1. add individual http-client-property name value pairs for timeouts

                    2. add individual http-client-property name value pair for Configurer

                    3. build a custom Configurer to read the timeout again from where we just put it

                    4. and set the properties on HttpClient, where they were just filtered out by HttpClientFactory

                     

                    really, I think I'll just do...

                        static {
                            DefaultHttpParams.getDefaultParams().setIntParameter(HttpConnectionParams.CONNECTION_TIMEOUT, 30000);
                            DefaultHttpParams.getDefaultParams().setIntParameter(HttpConnectionParams.SO_TIMEOUT, 30000);
                        }
                    

                    ...which works :-)

                     

                    Cheers, Tom.