Story

How can we increase the default HTTP Sleep Time on outbound web service calls?

When an outbound web service is invoked, the outbound  web dispatcher class calls standard EAI Transport Business Service. For example "EAI HTTP Transport" BS is called if the Outbound Web Service  port's transport type set to "HTTP", while the "EAI JMS Transport" BS is triggered when port's transport type is "JMS".

Generally the EAI Transport BS is invoked only with address parameters  set ("HTTPRequestURLTemplate" for "HTTP" and "SendQueuemame" and "ConnectionFactory" for "JMS").

However, it may be required to amend certain parameters, for example for "HTTP" one would need to control timeout with "HTTPSleepTime", "HTTPMaxIdleSeconds" or even change the address at run-time. Similarly for JMS, the "SendUsername" and "SendPassword" parameters may need to be required to provide to access Messaging Subsystem.

Is there a way to set parameters on the transport service, when invoking an outbound web service ?

Solution

Below are the options:

1. Setting "siebel_transport_param:..."arguments on the proxy business service (Applicable to: Siebel version 8.1 and above)

You can add additional arguments to the proxy business service used for invoking the outbound web service.  

For example, you can include the following argument in your call to the proxy business service (name = value) to:

•set HTTPSleepTime:          

  siebel_transport_param:HTTPSleepTime  = 240000
•to provide JMS user credentils:

siebel_transport_param:SendUsername = oc4jadmin
siebel_transport_param:SendPassword = welcome1

2. Use a Local Business Service (Applicable to: Siebel version 7.5 and above)

With a Local Business Service, you write custom code to control what is actually sent in the EAI HTTP Transport, and any additional parameters can be set as required.  

3. Add script to an EAI Transport
Applicable to: Siebel version 7.5 and above

Although not generally recommended, it is possible to add script to the Service_PreInvokeMethod of the EAI Transport.  


Example for the "EAI HTTP Transport":
function Service_PreInvokeMethod (MethodName, Inputs, Outputs)
{
    // this is the method called when the outbound web service is called.
    if(MethodName == "SendReceive")
    {
        Inputs.SetProperty("HTTPSleepTime", "240000");
    }

// continue operation to all method calls.
return (ContinueOperation);
}


Note: the above code would impact all calls to the EAI HTTP Transport, and could be made more 'intelligent' by checking certain values in the Inputs property set before continuing to change the parameters.