生成和设置 LUWID]

工作单元标识符(LUWID)用于标识属于单个同步点事务的一部分的对话。 与同一 LUWID 的所有对话同时提交(或已备份)。

主机集成服务器在启动 TP 时将两个 LUWID 分配给事务程序。 对于本地启动的 TP,这是发出 TP_STARTED 指令时。 第一个 LUWID 是受 TP 保护的 LUWID。 主机集成服务器将其用作 TP 分配的所有 synclevel AP_SYNCPT 会话的 LUWID。 当 TP 发出ALLOCATEMC_ALLOCATE 谓词,并且具有synclevel 为 AP_SYNCPT 时,Host Integration Server 将生成一个包含 TP 当前受保护的 LUWID 的附加装置。

第二个 LUWID 是 TP 的不受保护的 LUWID。 它用于由 TP 分配的所有会话,其同步级别不是 AP_SYNCPT。

对于远程启动的 TP,如果会话的 同步级别 为 AP_SYNCPT,则传入的附加可能包含 TPit 的 LUWID。 对于同步点对话,Host Integration Server 将 LUWID 保存为 TP 的受保护 LUWID,并为它生成一个新的未受保护的 LUWID。 对于与同步点(AP_SYNCPT)以外的 同步层 的对话,Host Integration Server 会将 LUWID 保存为 TP 的不受保护的 LUWID,并生成新的受保护的 LUWID。

主机集成服务器通过连接以下内容来生成 LUWID:

  • 本地 LU 的完全限定名称,前面是一个字节,指示其长度(不包括长度字节)。

  • 从当前日期和时间生成的 6 字节 LUW 实例编号(已修改以确保在必要时保持唯一性)。

  • 初始化为 1 的 2 字节 LUW 序列号。

    如果 LUWID 的 LU 名称的完全限定组件长度不是 17 字节,则 Host Integration Server 不会在此组件与 LUW 实例编号之间添加任何填充。 应用程序可以通过检查 LUWID 的第一个字节来确定 LUWID 的长度,以及 LUW 实例编号和 LUW 序列编号在其中的偏移量,该字节指示 LU 名称的完整长度。

    当 Host Integration Server 为 TP 生成受保护和未受保护的 LUWID 时,将通过递增受保护的 LUWID 的实例编号来创建未受保护的 LUWID。

    出于以下四个原因之一,需要由 TP 更改受保护的 LUWID:

  • 当事务被备份或提交时,LUWID 序列号必须递增。

  • 如果事务树已拆分,则必须为 TP 生成新的 LUWID。

  • 如果应用程序使用多个逻辑 TP 来实现事务,则每个 TP 必须具有相同的 LUWID(不同于 Host Integration Server 分配的 LUWID)。

  • 如果应用程序充当来自非 SNA 环境的网关,并且 LUWID 是通过非附加方式接收到的情况。

    若要允许 TP 设置或生成新的 LUWID,APPC API 提供了一个新的谓词 SET_TP_PROPERTIES。 此谓词允许 TP 将其 LUWID 设置为现有值,方法是提供 LUWID,或生成新值,然后从此使用它们。 当 Host Integration Server 生成新的 LUWID 时,它保证是唯一的。

    请注意,当受保护的 LUWID 发生更改时,应用程序(同步点系统组件)负责将新的 LUWID PS 标头传输到合作伙伴同步点系统。 同样,当收到新的 LUWID PS 标头时,应用程序必须通过发出指令 SET_TP_PROPERTIES 来通知 LU。