在早期版本的 Sun Java Communications Express 中,特定域的个人通讯录条目存储在由 db_config.properties 文件中定义的 defaultserver 实例表示的单个 LDAP 位置中。db_config.properties 文件位于域的 personalstore.properties 文件指向的目录中。例如 uwc-install/WEB-INF/config/ldappstore。
此设置无法进行伸缩,因此不能支持每个个人通讯录中包含大量用户和联系人。为了消除此限制,在 Communications Express 6.3 中提供了 psRoot 属性,管理员可以使用该属性置备用户,以便可以将不同用户的 PAB 数据分布在不同的 LDAP 位置。
例如 ldap://mydir.com:389/piPStoreOwner=jsmith,o=siroe.com,o=PiServerDb
图 3–1 高度概括了用于水平伸缩 Address Book Server 的体系结构。
以下是通讯录水平可伸缩性体系结构的主要组件:
个人存储
DB
DBMap
个人存储维护用户的通讯录信息。它包含用户已经创建的所有通讯录的定义,以及这些通讯录中的所有条目。个人存储以 URL 表示,URL 说明了个人存储所在的目录实例,以及该特定目录实例中的 DN。
DB(DataBase,数据库)包含个人存储集合,如图 3–1 中所示。通讯录可以访问任意数量的 DB。每个 DB 都由定义该 DB 的连接参数的 DB-ID 定义。不同类型的 DB 指向不同的 DB 位置。
DBMap 是类型相同的 DB 的集合。每个 DBMap 都有一个引用该 DBMap 的配置信息的 ID。
psRoot 是用户 LDAP 中的属性,它指定目录实例的主机、端口,以及用于存储用户通讯录条目的 DN。psRoot 的格式如下:ldap://ldap_host:ldap_port/DN。
psRoot 属性值确定 DB 类型和 DB 位置。
在以下 psRoot 示例中:ldap://mydir.com:389/piPStoreOwner=jsmith,o=siroe.com,o=PiServerDb
ldap:// 指明用户通讯录个人存储是通过 LDAPDB 插件进行访问的。
mydir.com:389 指定 LDAP 主机和端口。
piPStoreOwner=jsmith,o=siroe.com,o=PiServerDb 指定个人存储的 DN。
Address Book Server 不提供任何实用程序来根据任何可伸缩性策略为用户分配 psRoot 值。管理员需要设置最适于组织的特定策略,并使用自定义脚本按该策略设置 psRoot 值。
可以使用域特定的 personalstore.properties 文件中的 db.UserPsRoot 参数开启或关闭 psRoot 属性。如果将该参数设置为 "false",则使用 db_config.properties 文件中的 defaultserver 参数。如果将该参数设置为 "true",则使用用户的 psRoot 值。必须为 psRoot 中使用的每个唯一的目录服务器实例提供在 db_config.properties 文件中配置通讯录个人存储参数中列出的个人存储参数。运行时,使用 db-key.ldaphost 和 db-key.ldapport(其中 db-key 是用于区分实例的任意字符串)对 psRoot 属性值进行解析,从而得到目录实例。如果找不到 db-key.ldaphost 和 db-key.ldapport 的匹配项,则使用 defaultserver 实例。
用户 LDAP 条目中的 psRoot 属性是 Address Book Server 支持的 URL,它定义在其中存储和检索用户个人通讯录条目的 LDAP 位置。psRoot 属性让管理员可以置备用户,以便可以将所有用户的 PAB 数据分布在多个目录位置。
对于现有的 Messenger Express 用户,如果启用了 PAB 迁移,则使用现有的 pabURI 属性构建 psRoot 属性,并在 uwc-deploy-dir/WEB-INF/config/migrate.properties 中定义一个映射表。
migrate.properties 文件中的查找表包含以下格式的 pabhost 和 pabport 条目:
pabhost.pabport.abhostport = abldaphost:abldapport
其中,pabhost.pabport 指源目录实例,abldaphost 和 abldaport 是应向其迁移 PAB 数据的目标目录实例。
例如,如果要将 PAB 数据从 pab.example.com:389 处运行的目录迁移到 abs.example.com:389 处运行的通讯录目录中,则 migrate.properties 中应存在以下项:
pab.example.com.389.abhostport = abs.example.com:389
migrate.properties 文件中可以有任意数量的查找。如果某个用户的 pabURI 属性使用 pabhost 和 pabport,则使用默认 psRoot 模式构建的 psRoot 的格式如下:
ldap://abldaphost:abldapport/piPStoreOwner=%U,o=%D,o=PiServerDb
如果没有为 pabURI 值定义查找,也就是说,在映射表中未提供与 pabURI 匹配的条目,则使用 pabhost 和 pabport 值作为 abldaphost 和 abport 的默认值。这意味着,如果没有映射表,则 Messaging Server 中的 PAB 条目将按照通讯录模式迁移到同一目录实例中的其他根目录。在这种情况下,目标目录实例将与源目录实例相同。
修补程序的安装程序未定义查找表。您需要在安装修补程序后定义查找表,然后重新启动 Web 服务器。
请确保在该域的 personalstore.properties 指向的 db_config.properties 文件中定义了 abldaphost:abldapport 目录服务器实例。
新用户登录时,会为用户条目中的 psRoot 属性设置默认值。
对于新用户,将使用 personalstore.properties 文件中定义的 psRoot 模式以及 db_config.properties 文件中的 defaultserverhost 和 defaultserverPort 值来构建 psRoot 值。例如,使用默认的 psRoot 模式时,默认的 psRoot 值的格式如下:
ldap://default-server-host :default-server-port/piPStoreOwner=%U,o=%D,o=PiServerDb
其中:
%U 是用户的登录 ID。例如 jsmith。
%D 是用户的域。例如 siroe.com。