Tip: Disable servlet dispatching when using reverse proxy

Summary

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 3.0.1.1 as this issue was fixed in 3.0.1.2. This means it is not necessary to manually turn off the servlet dispatching when using CLM 3.0.1.2 and above.

More Information

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 false.

  • For Tomcat on Linux, edit the file
    <install-dir>/server/server.startup
    to add this line, after all the other lines that start with “JAVA_OPTS=”:
    JAVA_OPTS="$JAVA_OPTS -Dcom.ibm.team.jfs.app.http.client.dispatchingEnabled=false"
  • For Tomcat on Windows, edit the file
    <install-dir>/server/server.startup.bat
    to 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_HOME was 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.

Related Information

The following links point to related information:


Feedback
Was this information helpful? Yes No 0 people rated this as helpful.