Sun Java System Communications Express 6.3 Administration Guide

Supporting Horizontal Scalability of Address Book Server

In the previous release of the Sun Java System Communications Express, the Personal Address Book entries for a particular domain was stored in a single LDAP location that was represented by the defaultserver instance defined in the file. The db_config.propertiesfile existed in the directory pointed by the file for the domain. For example, uwc-install/WEB-INF/config/ldappstore.

This setup was unable to scale to support large number of users and contacts per Personal Address Book. To overcome this limitation, the psRoot attribute in Communications Express 6.3 enables the administrator to provision users so that PAB data for different users is spread across different LDAP locations.

For example, ldap://,,o=PiServerDb

Figure 3–1 provides a high level overview of the architecture used to scale the Address Book Server horizontally.

The following are the key components of the Address Book Horizontal Scalability architecture:

A Personal Store maintains the address book information of a user. It contains the definition of all the address books a user has created along with all the entries in those address books. Personal Stores are expressed as URLs, which describe the directory instance in which they are located and the DN within that particular directory instance.

A DB (DataBase) contains a collection of Personal Stores and as shown in Figure 3–1. . The address book can access any number of DBs. Every DB is defined by a DB-ID that defines the connection parameters for that DB. A DB of different type points to different DB locations.

A DBMap is a collection of DBs of the same type. Each DBMap has an ID which refers to the configuration information for that DBMap.

Figure 3–1 Horizontal Scalability of Address Book

Figure showing the horizontal scaling of address books

The psRoot is an attribute in the user’s LDAP that specifies the host, port of the directory instance and the DN where the Address Book entries for the user is stored. psRoot is in the form: ldap://ldap_host:ldap_port/DN.

The value of psRoot attribute determines the DB type and DB location.

In the following psRoot example, ldap://,,o=PiServerDb

ldap:// indicates that the Address Book Personal Store for the user is accessed through the LDAP DB plug-in. specifies the LDAP Host and Port.

piPStoreOwner=jsmith,,o=PiServerDb specifies the DN of the Personal Store.

Note –

The Address Book Server does not provide any utility to distribute psRoot values for users, according to any scalability policy. Administrators need to set a specific policy suited best for the organization and use custom scripts to set the psRoot value for that policy.

The psRoot attribute can be turned on or off using the db.UserPsRoot parameter present in the domain specific file. Set the parameter to “false” to use the defaultserver parameters in the file. Set the parameter to “true” to use the user’s psRoot value. The Personal Store parameters listed in Configuring the Address Book Personal Store Parameters in the File must be provided for each unique directory server instance used in psRoot. At runtime, the value of psRoot attribute is resolved to a directory instance using db-key.ldaphost and db-key.ldapport, where db-key is an arbitrary string that distinguishes one instance from the other. When no match is found for the db-key.ldaphost and db-key.ldapport, the defaultserver instance is used.

Additional Configuration Required for Horizontal Scalability Support

The psRootattribute in the user’s LDAP entry is an Address Book Server compliant URL that defines the LDAP location from which the user’s Personal Address book entries are stored and retrieved. The psRoot attribute enables the administrator to provision users so that PAB data for all users is spread across multiple directory locations.

For existing Messenger Express users, if PAB Migration is enabled, the psRoot attribute is constructed using the existing pabURI attribute and a mapping table is defined in uwc-deploy-dir/ WEB-INF/config/ .

The lookup table in the file consists of the pabhost and pabport entries in the following format:

pabhost.pabport.abhostport = abldaphost:abldapport

where pabhost.pabport refers to the source directory instance and abldaphost and abldaport is the target directory instance to which the PAB data should be migrated.

For example, if you want to migrate the PAB data from the directory running at to the address book directory running at, the should exist in the as: =

You may have as many lookups as found necessary in the file. If the pabURI attribute for a user uses pabhost and pabport, the psRoot constructed using the default psRoot pattern will be in the format:

ldap://abldaphost: abldapport/piPStoreOwner=%U,o=%D,o=PiServerDb

If the lookup is not defined for a pabURI value, that is, no entry is provided in the mapping table that matches the pabURI, the pabhost and pabport values are used as the default values for abldaphost and abport. Implying that in the absence of a mapping table, the PAB entries from Messaging Server is migrated to another root in the same directory instance as per the Address Book Schema. In this scenario, the target directory instance will be the same as the source directory instance.

Note –

The lookup table is not defined by the patch installer. You need to define the lookup table after a patch install, and restart the web server.

Ensure that abldaphost:abldapport directory Server instance is defined in the file pointed to by the of that domain.

Setting the psRoot Value Automatically

When a new user logs in, default values are set for the psRoot attribute in the user’s entry.

For new users, a psRoot value is constructed by using the psRoot pattern defined in the file, and the defaultserverhost and defaultserverPort values in the file. For example, when you use the default psRoot pattern, the default psRoot value is in the format:

ldap://default-server-host :default-server-port/piPStoreOwner=%U,o=%D,o=PiServerDb


%U = login ID of the user. For example, jsmith.

%D = domain of the user. For example