匹配调用和可被调用的 TP

运行 Host Integration Server 的每台计算机都维护可用可调用的 TP 名称和与 TP 名称关联的任何 LU 别名的列表。 我们可以获取此信息,如下所示:

  • 对于自动启动的可调用 TP,注册表或环境变量标识最多包含 8 个字符的 TP 名称,并且可以指定关联的 LU。 此信息从客户端发送到发起客户端的服务器。 客户端通过与服务器建立赞助连接来了解域,且必须先建立这种连接,之后才能进行其他任何任务。

  • 对于由操作员启动的可调用 TP,使用 RECEIVE_ALLOCATE 动词指定 TP 名称(最多 64 个字符)。 TP 名称被截断为 8 个字符,并从客户端发送到支持该客户端的服务器;如果通过注册表或环境变量配置了关联的 LU 别名,也会将其一同发送。

    注释

    如果希望 TP 名称是唯一的,建议将名称限制为 8 个字符或更少,或使名称在前 8 个字符内唯一。 这是因为分配请求的初步路由是使用前八个字符执行的。 尽管稍后在 ALLOCATEMC_ALLOCATERECEIVE_ALLOCATE 中指定的完整 TP 名称之间会进行进一步匹配,但在某些情况下,如果以后的匹配会失败,然而允许初步路由成功却是低效的。

    调用和可调用 TP 匹配的下一步是调用 TP 发出 ALLOCATEMC_ALLOCATE 谓词。 在 Host Integration Server 域中调用 TP 成功发出此谓词后,分配请求将流向 ALLOCATEMC_ALLOCATE 谓词中指定的合作伙伴 LU,指出已请求的可调用 TP 的名称。

    当分配请求到达时,Host Integration Server 会将请求的可调用的 TP 名称和 LU 别名与可用可调用 TP 列表(可以包括关联的 LU 别名)进行比较。 此比较可由注册表变量修改,但默认情况下执行如下作:

  • 尽管 在 ALLOCATEMC_ALLOCATE 谓词中请求的 TP 名称可以长达 64 个字符,但通过注册表或环境变量接收的任何名称限制为 8 个字符或更少。 因此,比较中仅使用 TP 名称的前八个字符。

  • 首先对 TP 名称和 LU 别名执行比较。 在 TP 名称和 LU 别名上都有匹配项的可调用 TP 将优先于未通过注册表或环境变量配置 LU 别名的 TP 被选择。 未配置 LU 别名的 TP 可以与任何指定该 TP 名称的请求匹配,因为不存在基于 LU 别名的不匹配的情况。

  • 请求的和可用的 TP 名称的比较按特定顺序执行:

    1. Host Integration Server 首先检查本地系统上操作员启动的可调用 TP(运行 Host Integration Server 的本地计算机)。

    2. 如果未找到匹配项,Host Integration Server 将检查本地系统上自动启动的可调用 TP(运行 Host Integration Server 的本地计算机)。

    3. 如果未找到匹配项,Host Integration Server 会检查其他 Host Integration Server 客户端或服务器上的作员启动的可调用 TP。

    4. 如果未找到匹配项,Host Integration Server 会检查其他 Host Integration Server 客户端或服务器上的自动启动的可调用 TP。

    可以通过 SnaServer 服务的注册表项来修改此比较。 这些条目称为 DloadMatchTPOnlyDloadMatchLocalFirst,并在 Microsoft Host Integration Server 在线参考书中介绍。

    如果找到匹配项,Host Integration Server 会向包含请求的事务程序(TP)的系统发出信号,以连接到运行 Host Integration Server 的服务器。 如果未找到匹配项,Host Integration Server 将拒绝传入请求。

    有关处理 TP 名称和 LU 别名的特定方法的建议,请参阅 在 SNA 网络中排列 TP

注释

由于 APPC 的工作方式,在本地数据缓冲区已满或者发出确认或刷新命令之前,分配请求不会执行。 这可能意味着分配请求在发出 ALLOCATEMC_ALLOCATE 谓词后,需要经过一段时间才开始处理。 因此,在伙伴 LU 中拒绝分配请求导致的任何分配失败都将被视为具有分配失败返回代码之一的后续谓词失败。