Tip: Disable servlet dispatching when using reverse proxy
Last Updated: January 17, 2012
Build basis: Rational solution for Collaborative Lifecycle Management 2011
When Rational solution for Collaborative Lifecycle Management applications are deployed in separate application servers with a reverse proxy configured to make each application appear to be deployed in a single central server, a defect introduced in the 3.0.1 release will cause various application functions to fail.
This will be most noticable in the Lifecycle Project Administration (LPA) and Requirements Management (RM) applications.
A system property can be set to work around the problem.
Note: This article only applies to CLM versions 3.0.1 and 22.214.171.124 as this issue was fixed in 126.96.36.199. This means it is not necessary to manually turn off the servlet dispatching when using CLM 188.8.131.52 and above.
CLM applications have an optimization for executing inter-application HTTP requests when applications are installed in the same application server (such as WebSphere or Tomcat). When possible, HTTP requests are routed directly to applications within the application server, rather than actually being sent out on the network. This optimization is known as “servlet dispatching”.
Since servlet dispatching only works when applications are running in the same application server, the dispatching algorithm attempts to determine whether the destination of an HTTP request will be the same application server as the one making the request. If not, the request is not optimizable, and will be made in the usual way (on the network).
The algorithm involves comparing the host names of the source and destination servers. In a configuration where a reverse proxy is used to make applications running in separate servers appear to be running in the same “logical” server, the algorithm mistakenly concludes that dispatching is possible. The dispatched requests will fail, however, if the destination application is not running in the same physical server as the source application. This will initially manifest itself as failures reported in the CLM setup wizard, particularly with the LPA and RM applications.
This issue can be worked around by explicitly disabling the servlet dispatching optimization. This is done by setting the
com.ibm.team.jfs.app.http.client.dispatchingEnabled Java VM system property to the value
- For Tomcat on Linux, edit the file
<install-dir>/server/server.startupto add this line, after all the other lines that start with “JAVA_OPTS=”:
- For Tomcat on Windows, edit the file
<install-dir>/server/server.startup.batto add this line, after all the other lines that start with “set JAVA_OPTS=”:
set JAVA_OPTS=%JAVA_OPTS% Dcom.ibm.team.jfs.app.http.client.dispatchingEnabled=false
- For WebSphere, add the property as a Java Virtual Machine custom property, in the same way that
JAZZ_HOMEwas defined, as specified in Setting up a WebSphere Application Server
You must set the
com.ibm.team.jfs.app.http.client.dispatchingEnabled=false property for each server that is hosting a CLM application, or the Jazz Team Server.
The following links point to related information:
Copyright © 2012 IBM Corporation