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 db_config.properties file. The db_config.properties file existed in the directory pointed by the personalstore.properties for the domain. For example, uwc-install/WEB-INF/config/ldappstore .
This deployment was unable to scale to support large number of users and contacts per Personal Address Book. To overcome this limitation, the psRoot attribute in Sun Java System Communications Express 6.2, enables the administrator provision users so that PAB data for different users can be is spread across different LDAP locations.
For example, ldap://mydir.com:389/piPStoreOwner=jsmith,o=siroe.com,o=PiServerDb
Figure 3-1 provides a high level overview of the architecture used to scale Addressbook Server horizontally.
The key components of the Address Book Horizontal Scalability architecture are:
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 contains a collection of Personal Stores and as shown in Figure 3-1, any number of DB’s can be accessed by the Address Book Server. Every DB is defined by a DB-ID that defines the connection parameters for that DB. A DB can be of different types and can point 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.
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. The 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 psRoot example, ldap://mydir.com:389/piPStoreOwner=jsmith,o=siroe.com,o=PiServerDb
ldap:// indicates that the Address Book Personal Store for the user is accessed using LDAP DB Plugin.
mydir.com:389 specifies the LDAP Host and Port.
piPStoreOwner=jsmith,o=siroe.com,o=PiServerDb specifies the DN of the Personal Store.
The Addressbook Server does not provide any utility to distribute psRoot values for users, per 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 personalstore.properties file. Set the parameter to “false” to use the defaultserver parameters in db_config.properties 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 db_config.properties 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.
For new users a psRoot value is constructed using the psRoot pattern defined in personalstore.properties file, and the defaultserverhost and defaultserverPort values, in the db_config.properties file. For example, using the default psRoot pattern, the default psRoot value will be in the format:
%U = login ID of the user, for example, jsmith.
%D = domain of the user, for example siroe.com.