One HTTP request triggers duplicate jobs on HTTP server side when using "HTTPComponent" as server type. The "Tomcat" server type works fine.

One HTTP request triggers duplicate jobs on HTTP server side when using "HTTPComponent" as server type. The "Tomcat" server type works fine.

book

Article ID: KB0092845

calendar_today

Updated On:

Products Versions
TIBCO ActiveMatrix BusinessWorks -
Not Applicable -

Description

Description:
After sending one request with "Send HTTP Request" activity, there are four duplicate jobs created on the HTTP server side. This never happens when using "Tomcat" as the server type.
Symptoms:
See attached screenshots and attached project. (Filenames: connectionTimeOut.jpg, symptom_in_designer.jpg, symptom_in_tcptrace.jpg and Test_HTTP_support.zip).
Cause:
This is caused by the "connectionTimeOut" in the "Advanced" tab in the "HTTP Connection" activity. This property allows an HTTP server to close a connection after a specific time. When the HTTP server close the connection, the BW client will do a retry. That leads to duplicate jobs on server side. As mentioned in KB-37722,  BW uses Apache HttpClient as the HTTP Client. HttpClient will retry the method three times provided that the request has never been fully transmitted to the target server. Exercise caution when enabling auto-retrial. Use it only if the method is known to be safe to retry multiple times without causing data corruption or data inconsistency. A detailed explanation can be found at http://hc.apache.org/httpclient-3.x/tutorial.html. The same can be controlled from the client side by using properties. Check KB-37722 for more information.

Issue/Introduction

One HTTP request triggers duplicate jobs on HTTP server side when using "HTTPComponent" as server type. The "Tomcat" server type works fine.

Resolution

You can choose one of the following workarounds.


1). Increase the "connectionTimeOut" value when a server can not response to client in time.


2). Use a "Tomcat" server type. "Tomcat" will ignore the "connectionTimeout" setting. This means the server will not close the connection and the client will not retry.


3). The same can be controlled from the client side by using properties. Check KB-37722 for more information.

Additional Information

KB37722

Attachments

One HTTP request triggers duplicate jobs on HTTP server side when using "HTTPComponent" as server type. The "Tomcat" server type works fine. get_app