消息集迁移注意事项

本主题提供将消息集迁移到 WebSphere Message Broker V6.0 时需要了解的信息。它包含以下部分:

如果要使用 V5.1 Message Brokers Toolkit,请将本主题中所有引用的“V5.0”替换为“V5.1”。

V2.1 迁移

要将消息集从 V2.1 迁移到 V6.0,使用 mqsimigratemsgsets 命令将 V2.1 消息集导出文件(.mrp)转换为 V6.0 消息集项目。在运行该命令之前,请参阅从 V2.1 迁移消息集主题,它提供了其操作的详细说明。

V5.0 迁移

要将消息集从 V5.0 迁移到 V6.0,不需要迁移命令。V5.0 消息集项目的内容可以由 V6.0 Message Brokers Toolkit 读取,并且在第一次修改并保存时可以自动转换为 V6.0 格式。

一般迁移信息

无论是从 V2.1 还是 V5.0 迁移,以下信息都适用。
  • 逻辑属性最大发生已取代 CWF 属性重复计数,使 CWF 物理格式与 TDS 及 XML 物理格式保持一致,它已经使用最大发生确定重复次数。对于设置 CWF 重复计数值的每个元素或组,消息编辑器的“问题”视图中会显示一个警告。右键单击警告并单击快速修订以解决该问题。
    注:V5.0 中,如果未设置 CWF 属性重复计数并且最小发生不等于最大发生,则重复次数为 1。在 V6.0 中,重复次数为最大发生。这种情况下,不可能发出警告。这类消息模型不是由 COBOL 或 C 导入器创建的,仅当您已经使用 V5.0 消息编辑器创建了 CWF 消息模型时,才会发生这种情况。
  • V6.0 之前的 TDS 物理格式包含消息密钥的嵌入式消息标识。不推荐使用消息密钥技术,名为“消息标识”的技术已经取而代之。对于具有 TDS 消息密钥值的每条消息以及将 TDS 解释元素值属性设置为消息密钥的每个元素或属性,消息编辑器的“问题”视图中会显示一个警告。右键单击警告并单击快速修订以解决该问题。

    如果消息集有可能部署到 V5.0V2.1 代理,请继续使用 TDS 消息密钥,因为这些代理不支持嵌入式消息标识的“消息标识”技术。

  • TDS 物理格式属性数据模式现在已由 Message Brokers Toolkit 验证,以确保它是一个有效的 XML 模式正则表达式。消息编辑器的“问题”视图中将显示错误,您必须使用编辑器手动纠正这些错误。具体而言,对元字符转义的相关 XML 模式规范发出了一些勘误表,它们导致出现验证错误。要纠正这些错误,您可能需要使用反斜杠字符(“\”)对连字符(“-”)或花括号字符(“{”和“}”)进行转义;例如“\{”或“\-”。如果在使用 IBM 提供的消息集时接收到这类错误,请联系 IBM 以获取纠正版本的消息集。
  • 现在将元素或属性的缺省值或固定值以及简单类型的枚举值与简单类型的长度、最小长度和最大长度面(如果提供)进行比较。如果某个值不符合面,消息编辑器的“问题”视图中将显示错误。右键单击错误并单击快速修订以解决该问题(如果提供快速修订)。否则,使用编辑器手动纠正该问题。如果将 COBOL 副本导入 V5.0 修订包 2 或先前版本的 Message Brokers Toolkit,很可能会遇到该错误。
  • 已经从局部属性、全局属性和属性引用中除去 CWF 及 TDS 编码空编码空值属性。在 XML 模式中,只有元素可以具有 Nillable 属性,因此作为属性建模的数据字段不能带有空值。如果已经为 V5.0 中的属性指定 CWF 或 TDS 编码空值,则忽略它们。
  • 已经从局部属性和属性引用中除去 TDS 重复元素定界符属性。在 XML 模式中,不能重复属性。如果已经为 V5.0 中的属性指定 TDS 重复元素定界符值,则忽略它们。
  • 对于具有简单类型 xsd:gMonth 的元素或属性,CWF、XML 和 TDS 日期时间格式属性的缺省值现在是“--MM”。在 V5.0 中,缺省值是“--MM--”。已纠正它以符合 XML 模式勘误表要求。
  • 进行迁移时无需重新部署消息集,因为 mqsimigratecomponents 命令会将代理数据库中的消息字段升级为 V6.0 格式。但是,如果不重新部署消息集并观察 ParserException(如“已检查向量错误”或“访问冲突”)当第一次使用采用消息集的消息流时,您必须重新部署消息集。如果消息字典包含先前未检测到的不良数据,可能发生这种情况。在 V6.0 中,第一次使用时会检查消息字典;在 V2.1V5.0 中,则不是这样。

MRM 解析器中的行为变化

无论是从 V2.1 还是 V5.0 迁移,以下信息都适用:
  • XML 物理格式。V6.0 现在对 XML 文档中的 xsi:type 属性敏感,并且会对其行为做出相应修改。不再将 xsi:type 属性作为自定义属性,因此它们在消息树中显示为名称‘type’而不是‘@type’。如果消息流逻辑对消息树中的 xsi:type 属性敏感,请更改消息流以符合新的行为。要保留消息流中的前 V6.0 逻辑,将环境变量 MQSI_IGNORE_XSI_TYPE 设置为任何值,将采用前 V6.0 行为。
  • XML 物理格式。XML 文档中的 DOCTYPE 信息在解析时不会显示在逻辑消息树中,但它从输入文档到输出文档中是保留的,因为 MRM 会内部保留一个 DOCTYPE 副本。在 V6.0 之前,这是位流的一个相同副本。在 V6.0 中,复制过程会导致丢失一些格式空格。例如,某个输入 DOCTYPE 中的以下元素声明:
    <!ELEMENT e0 (e1|e2)+ >
    在输出中显示为:
    <!ELEMENT e0 (e1|e2)+>
    新行为与 XML 物理格式处理所有其他 XML 结构中的空格时的方式相同。
  • TDS 物理格式。对于将逻辑属性组合设置为选项并将 TDS 属性数据元素分隔设置为固定长度的组,解析器始终假设选项数据的长度是组中最长子代的长度,并且始终读写这些数量的字符。确保您的消息符合这一点,否则解析器将选项后的数据作为选项的一部分。在 V6.0 之前,解析器未实施该规则。
  • TDS 物理格式。如果将 TDS 元素属性编码空设置为 NullPadFill,仅当解析或写入时频繁使用相应的长度属性时,才使用它。在 V6.0 之前,无论是否频繁使用长度属性,都使用 NullPadFill
  • TDS 物理格式。TDS 属性数据元素分隔设置为所有元素定界变长元素定界。现在,始终将复杂元素作为变长元素,而不管它自己的数据元素分隔设置如何。这表示,在消息位流中,复杂元素与任何后续元素之间有一个定界符,而一个复杂元素的所有实例之间有一个重复元素定界符(即使复杂元素具有固定长度)。在 V6.0 之前,解析器不实施该规则,并且对于变长元素定界,写入器在复杂元素长度已知时不会输出定界符。
  • TDS 物理格式。TDS 属性数据元素分隔设置为使用数据模式。如果为数据模式指定的正则表达式返回零长度匹配,现在将它作为以零长度值表示的元素。在 V6.0 之前,将零长度匹配作为省略的元素。
  • TDS 物理格式。TDS 属性数据元素分隔设置为标记定界。不再允许位流中出现在组的最后一个子代后的无关定界符,它会导致解析异常。在 V6.0 之前,解析器未实施该规则。如果存在这个问题,请考虑使用 TDS 组终止符属性对无关定界符建模。
  • TDS 物理格式。TDS 属性数据元素分隔设置为标记定界。在 V6.0 中解析标记定界组时,即使组组合属性设置为 SequenceOrderedSet,解析器仍尝试弄清消息位流中无序显示成员的组。但是,如果组包含嵌入式消息或复杂元素,或是无法从位流标识组,则组中所有成员在位流中的显示顺序必须与它们在模型中定义的顺序相同。如果它们无序显示,则无法正确解析组并且会产生不可预测的结果。这种情况的一个症状是,无法将一个元素匹配到模型时,自定义元素在消息树中的显示情况。

    这种情况的一个具体示例是,消息包含一个包含消息,并且您使用消息密钥或消息标识技术来标识嵌入式消息。如果提供消息密钥或消息标识值的元素与模型不匹配,解析器将无法确定将其值解释为消息密钥还是消息标识。

    V6.0 之前,解析器尝试弄清所有无序标记定界组,并且由此会引起性能降低。在 V6.0 中,如果出现这个问题,请考虑将组合设置为 UnorderedSet,作为嵌入子组对组的无序内容建模。

    如果复杂元素或组提供组指示符、标记或数据模式,或者其子成员提供组指示符、标记或数据模式,则可以从位流标识它们。

    除了其名称之外,标记定界组的成员在某些情况下不需要提供标记;具体而言,即成员是一个嵌入式消息或复杂元素或组。

  • TDS 物理格式。TDS 数据元素分隔属性设置为标记编码长度。在进行写操作时,编码长度作为数据中的字符数量输出,在解析时用于匹配解释。在 V6.0 之前,编码长度作为数据中的字节数量输出,如果数据不是 SBCS,则解析时它与解释不匹配。
  • TDS 物理格式。进行写操作时,如果模型中元素或组的重复次数是固定的,而逻辑消息树中的实际符合条件超出了重复次数并且数据元素分隔属性不是“标记”分隔之一,则额外符合条件将被废弃并且不会显示在输出中。在 V6.0 之前,额外符合条件显示在输出中。如果希望输出中显示额外重复,请指定 maxOccurs=-1 以表示重复次数为无限大。
  • 所有物理格式。对授予 I“格式”属性的日期之间字段进行写操作时,输出格式取决于字段的逻辑类型,如作为字符串数据的 dateTime中所述。在 V6.0 之前,输出格式是不正确的 yyyy-MM-dd'T'HH:mm:ssZZZ 完整格式。
  • 输入和输出消息验证已得到增强,使它能检测到更多无效消息。因此,当消息在先前版本中标记不正确时,可以在 V6.0 中将它标记为无效。
相关任务
迁移消息集
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ah20250_