Configuring an LDAP connection for a Jazz Team Server

ldap One of my first papers on was to explain how to setup an LDAP. The Jazz team greatly improved the process, nevertheless I’m still struggling to follow correctly each step described in the help.

It is for this reason, I decided to write a new article to list these steps. I hope it will help…

Read More »

Running two Jazz servers on the same machine

TwoTomcatI got recently this interesting question from a friend and colleague to assist one of our customers.

To be able to handle two instances of Jazz server, we need to change the port number of one of them. Based on this first knowledge, I found this page on the CLM Doc online.

Unfortunately, it is not enough. Actually, I get this weird error when I try launching both servers.

Failed to initialize end point associated with ProtocolHandler [“http-bio-9443”]

Finally, I looked for a page explaining how to launch two Tomcats on the same machine and I found this useful page.

To summarize the result of my investigations, for the second server instance, I had to patch the following lines in the server.xml file located at /server/tomcat/conf.

Replace the Shutdown element

<Server port="9005" shutdown="SHUTDOWN">


<Server port="new_shutdown_port_number" shutdown="SHUTDOWN">
  • with new_shutdown_port_number = 13005, for example

Replace the Endpoint element

<Connector port="9080" protocol="HTTP/1.1"
    redirectPort="9443" />


<Connector port="new_non_SSL_port" protocol="HTTP/1.1"
    redirectPort="new_SSL_port" />
  • with new_non_SSL_port = 13080, for example
  • with new_SSL_port = 13043, for example

Replace the SSL element

<Connector port="9443"


<Connector port="new_SSL_port"
    ... >
  • with new_SSL_port = 13043, for example

Replace the AJP element

<Connector port="9009" protocol="AJP/1.3"
     redirectPort="9443" enableLookups="false" />


<Connector port="new_AJP_port" protocol="AJP/1.3"
    redirectPort="new_SSL_port" enableLookups="false" />
  • with new_AJP_port = 13009, for example
  • with new_SSL_port = 13043, for example

Save the file and you are done ! You can now launch your two Jazz/Tomcat servers on the same machine.

I hope it will help.

Backing up the Jazz Team Server

Recently I got this question from a customer: “What are the other files in Tomcat we should backup when we backup our JTS databases?”

I was ready to reply the default answer I used to reply with Rational Team Concert 2.x: “Backup tomcat-users.xml, teamserver.propertiesserver.xml files.
Then I realized that the answer might be too short for RTC 3.x and the new associated topology so I decided to bother my L3 support colleague (and friend!), Eric Jodet.

Eric kindly sent me a folder containing the list of the files backed up by IBM Install Manager when it upgrades RTC and I realized that I was very far from the reality with my 3 initial files.

It is for this reason I decided to share this information until we get a page in the CLM help covering this point.
Read More »

Setup the LDAP Server for Rational Team Concert 3.0

Setting up the connection between a Jazz Team Server and an LDAP server was always difficult for lots of RTC users. 

Most of the time the problem came from:

  1. Unknowing the parameters to use to access the LDAP server,
  2. Having to edit several Application Server files which implied typo or misunderstanding errors.

Long time ago,  I wrote a Wiki page on to try to share my “newbie” understanding and put in one unique page all the information you need to know for such setup.

Even if this wiki page was regularly consulted, based on the question I received, it was clear that the setup on the LDAP server was still a tough and frustrating task.

The last release of Rational Team Concert (3.0) provides a great wizard which should help us improving our experience with such setup.

Obviously, we still need to know all the correct parameters to access the LDAP server, but at least now:

  • the Jazz Team Server tests the LDAP connection to validate the provided parameters, and
  • generates all the Application Server setup files required to make it work…

I built this short video (without sound) detailing all the steps to go through to set up an LDAP server connection in RTC 3.0 to share with you this neat improvement.

I really hope it will help…

Jazz Form-based Authentication

This spring Steve Wasleski (Jazz Jumpstart team), Steve Speicher (OSLC and Change Management Architect) and myself built a workshop on Jazz Extensibility for Innovate 2010, the Rational Software Conference. This workshop, labs and source code, has been published on under this link: OSLC Workshop and Jazz Extensions Workshop.

During the labs elaboration, I had to understand how the Jazz Team Server manages the authentication: Form-based Authentication and how to interact with it as a client. Because it took me some times to figure it out, I think this blog is a good place to extract this part of the lab and share it with the “Rest of the World”.

The Form-Based Authentication is a three steps process:

  1. The client requests a protected resource.
  2. If the client is not authenticated, the server redirects to the login page, and the client has to fill the form and submit it to the server.
  3. If the login has succeeded, the client submits a request the protected resource again and should get it back.

Clearly, the behavior doesn’t seem obvious because the process seems to indicate that it requires a human behind interaction.
Actually, you can perfectly emulate and manage this interaction programmatically.
Let say you want to reach a resource designated by a URL (protectedResource) which is protected by a Form-based authentication.
The following snippet code describes how you will implement this 3-steps process:

HttpGet documentGet = new HttpGet(protectedResource);
documentGet.addHeader("accept", mediaType);
// Step (1): Request the protected resource
HttpResponse response = httpClient.execute(documentGet);
if (response.getStatusLine().getStatusCode() == 200) {
   Header header =
   if ((header!=null) && ("authrequired".equals(header.getValue()))) {
      // The server requires an authentication: Create the login form
      HttpPost formPost = new HttpPost(serverURI+"/j_security_check");
      List nvps = new ArrayList();
      nvps.add(new BasicNameValuePair("j_username", login));
      nvps.add(new BasicNameValuePair("j_password", password));
      formPost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
      // Step (2): The client submits the login form
      HttpResponse formResponse = httpClient.execute(formPost);
      header = formResponse.getFirstHeader("X-com-ibm-team-repository-web-auth-msg");
      if ((header!=null) && ("authfailed".equals(header.getValue()))) {
         // The login failed
         throw new InvalidCredentialsException("Authentication failed");
      } else {
         // The login succeed
         // Step (3): Request again the protected resource
         HttpGet documentGet2 = new HttpGet(protectedResource);
         documentGet2.addHeader("accept", mediaType);
         return httpClient.execute(documentGet2);
return response;

This code is based on Apache HTTP Client (Release 4.0.1) APIs.

I hope it will help.


Reset the bundles/plugins of your Jazz Team Server (

Deploying for the first time a new feature on a Jazz Team Server (JTS) is pretty straight forward:

  1. Create an Eclipse update site including the feature (e.g. you want to add to the JTS,
  2. Copy the site.xml file, the /features and the /plugins folders in a directory located under the <root>/jazz/server/ folder
  3. Create a file under the /jazz/server/conf/jazz/provision_profiles folder
  4. Open the new ini file with Notepad and enter these two lines:
  5. Save the ini file
  6. Restart your JTS and you are all set

Now, if you try to apply the same deployment process to update your feature, you will realize that the JTS keeps the same code; the bundles are actually cached.

So, to reset this cache, you have two main options:

  • Either by accessing to the JTS internal features links:
    1. Start your JTS
    2. Open your web browser on https://<yourserver&gt;:<port>/jazz/admin?internal=true
    3. Once you have logged on, on the bottom-left of the web UI, you will discover a set of links that you never saw before:
    4. Click on Server Reset
    5. A button labeled Request Server Reset will appear
    6. Press the button to request a reset of the server. The server will be reset during the next start up…
    7. Restart your JTS and your are all set
  • You can also directly access to this feature calling this URL:
    • https://<yourserver>:<port>/jazz/admin/cmd/requestReset

I hope it will help

Special thanks to my buddy Eric Jodet from the Jazz L3 Maintenance who shown me the trick…