IBM BPM 数据库与用户注册表之间同步用户

使用 usersSyncsyncExistingUsersusersFullSync 命令以在 WebSphere® Application Server 用户注册表与 IBM® BPM 数据库之间同步用户。

要点: 因为运行这些命令会导致系统高负载,请考虑在空闲时运行。

您还可以使用 wsadmin 脚本编制客户机的 AdminTask 对象来执行这些任务。 有关更多信息,请参阅 BPMUsersSyncTaskBPMUsersFullSyncTaskBPMSyncExistingUsersTask 命令

通过以下方法,使用这些命令来更新 IBM BPM 数据库中的用户信息:
表 1. 用于同步用户的命令
命令 用法
usersSync 更新一组指定用户的信息。 您还可使用该命令在 IBM BPM 数据库中创建已在用户注册表中可用的特定用户。 如果指定了用户注册表中不可用的用户,那么将跳过该用户。
syncExistingUsers 更新 IBM BPM 数据库中现有用户的信息,但不会将新用户从用户注册表导入到数据库中。 您还可以使用该命令来将 IBM BPM 数据库中用户的用户状态与用户注册表中的用户可用性同步。 例如,如果从用户注册表中删除了用户,那么该命令在 IBM BPM 数据库中将这些用户标记为不活动。
usersFullSync 将所有用户信息从用户注册表导入到 IBM BPM 数据库中。 如果用户注册表包含新用户,那么将在 IBM BPM 数据库中创建这些用户。
注意: 使用此命令时,请务必谨慎。 由于用户注册表中的所有用户都导入到 IBM BPM 数据库中,因此该命令还可能导入未使用 IBM BPM 的用户。
同步命令的运行方式取决于是否对联合存储库 (VMM) 配置了 WebSphere Application Server 安全性:
非联合存储库
WebSphere Application Server 用户注册表 API 用于运行命令。
联合存储库
联合存储库 API 用于运行命令。 此 API 的性能明显优于用户注册表 API。 用于同步用户信息的 VMM 调用数取决于命令和 IBM BPM 数据库中的可用用户数。
usersSync
针对每个用户发出一次 VMM 调用。
syncExistingUsers
缺省情况下,如果 IBM BPM 数据库中的可用用户数少于 1000,那么将针对每个用户发出一个 VMM 调用来同步数据。 如果 IBM BPM 数据库中的可用用户数大于 1000, 那么改为针对所有用户发出一个调用。 可以配置该阈值。
注意: 如果“针对所有用户的调用”未返回用户注册表中的所有可用用户, 请执行以下操作之一:
  • 通过更改阈值来反映用户注册表中的实际用户数,以强制使用“针对每个用户发出一次 VMM 调用”。
  • 请联系 LDAP 管理员来调整 LDAP 配置,以便在一次 LDAP 搜索调用中检索所有用户。
usersFullSync
针对所有用户发出一个 VMM 调用,而无论数据库中的用户数。
注意: 如果该调用未返回用户注册表中的所有可用用户, 请联系 LDAP 管理员来调整 LDAP 配置,以便在一次 LDAP 搜索调用中检索所有用户。

命令的输出包含已同步的用户数。

位置

这些脚本位于 deployment_manager_profile/bin 目录中,可用于 Windows 和 Linux 环境中。

usersSync 语法

usersSync.[bat|sh]
  -username|-u|-user user_name
  -password|-p password
  [-host host_name]
  [-port port]
  username_1 username_2 ... username_n

syncExistingUsers 语法

syncExistingUsers.[bat|sh]
  -username|-u|-user user_name
  -password|-p password
  [-userState sync|any_other_value]
  [-host host_name]
  [-port port]
  [username_1 username_2 ... username_n]
如果未指定可选的用户列表,那么将处理 IBM BPM 数据库中的所有用户。

usersFullSync 语法

usersFullSync.[bat|sh]
  -username|-u|-user user_name
  -password|-p password
  [-host host_name]
  [-port port]

参数

-username|-u|-user user_name
必需。 管理用户的名称。
-password|-p password
必需。 用户密码(未加密)。
-host host_name
可选。 运行管理任务的 AppTarget 集群成员的主机名。 您还必须指定端口。
-port port
可选。 运行管理任务的 AppTarget 集群成员的 SOAP 端口。
-userState sync|any_other_value
仅适用于 syncExistingUsers 命令。 可选。 更新 IBM BPM 数据库中用户的用户状态。
  • 从用户注册表中删除的用户将在 IBM BPM 数据库中变为不活动状态。
  • 在用户注册表中重新激活的用户将在 IBM BPM 数据库中变为活动状态。
如果提供了任何其他值,将不会刷新用户状态。

配置

SOAP 连接
所有命令。 如果使用的是 SOAP 连接,那么完成这些命令所需的时间可能比指定的 SOAP 超时值要长。 尽管命令会继续执行直到完成,但您可能会在 systemOut.log 文件中看到 java.net.SocketTimeoutException: Read timed out 异常。 要防止出现此异常,请为 profile_root/properties/soap.client.props 文件中的 com.ibm.SOAP.requestTimeout 属性设置一个更高的值。 要禁用超时,请将该属性的值设置为 0
VMM 调优
syncExistingUsersusersFullSync 命令。 如果使用“针对所有用户发出一次 VMM 调用”,那么将在 wimconfig.xml 文件中调整每个相关 LDAP 存储库的 VMM 配置。 尤其是,为 configurationProvider->maxSearchResults 属性选择适当的设置,并考虑调整 ldapServers->connectTimeoutattributesCache->cacheSize 属性的值。 有关调优 VMM 的更多信息,请参阅 WebSphere Application Server Network Deployment Knowledge Center。
用户检索阈值
仅适用于 syncExistingUsers 命令。 基于 IBM BPM 数据库中的可用用户数,threshold-for-existing-user-retrieval-mode 配置属性确定是针对每个用户分别调用 VMM 还是针对所有用户调用一次 VMM。 缺省值是 1000 个可用用户。
  • 如果不超过 1000 个可用用户,那么将针对每个用户发出调用(逐个用户)。
  • 如果超过 1000 个用户,那么将针对所有用户发出一个调用。
针对阈值属性选择的值取决于环境的性能。 例如,如果在 IBM BPM 数据库中有 1500 个用户,并且通过按用户逐个从 VMM 检索这些用户比针对所有用户使用一个 VMM调用的速度更快,那么将值设置为至少 1500。 另外检查以下配置设置:
  • configurationProvider->maxSearchResults 属性的值适合阈值属性的值
  • 关联的用户存储库(例如,LDAP)的配置不会限制返回的搜索结果总数。
要更改该属性的值,请将具有相应值的以下元素添加到您拓扑的 100Custom.xml 文件中。
<common merge="mergeChildren">
   <security>
      <threshold-for-existing-user-retrieval-mode merge="replace">1000</threshold-for-existing-user-retrieval-mode>
   </security>
</common>
有关如何查找 100Custom.xml 文件的信息,请参阅100Custom 配置文件的位置