Sun Java System Message Queue 4.2 发行说明

XML 有效负荷消息的模式验证

通过使用 Message Queue 4.2 中的此新功能,可以在将消息发送到代理时针对 XML 模式验证文本(不是对象)XML 消息的内容。XML 模式 (XSD) 位置是作为 Message Queue 目的地属性指定的。如果未指定 XSD 位置,则使用 XML 文档中的 DTD 声明来执行 DTD 验证。(XSD 验证包括数据类型和值范围验证,它比 DTD 验证更严格。)

使用此新功能的客户端应用程序应将 Java SE 版本升级到 JRE 1.5 或更高版本。

要启用 XML 模式验证,请设置以下物理目的地属性:

表 1–5 用于 XML 模式验证的物理目的地属性

属性 

类型 

默认值 

描述 

validateXMLSchemaEnabled

Boolean 

false

是否启用 XML 模式验证? 

如果设置为 false 或未进行设置,则不会为目的地启用 XML 模式验证。

XMLSchemaURIList

String 

null 

以空格分隔的 XML 模式文档 (XML Schema Document, XSD) URI 字符串列表 

这些 URI 指向用于 XML 模式验证(如果启用)的一个或多个 XSD 的位置。 

如果指定多个 URI,应使用双引号将该值引起来。 

示例: 

"http://foo/flap.xsd http://test.com/test.xsd"

如果未设置此属性或将其设置为 null,并且启用了 XML 验证,则使用在 XML 文档中指定的 DTD 来执行 XML 验证。 

reloadXMLSchemaOnFailure

Boolean 

false

是否在失败时重新装入 XML 模式? 

如果设置为 false 或未进行设置,则不会在验证失败时重新装入该模式。 

在启用 XML 验证后,Message Queue 客户端运行时环境将尝试针对指定的 XSD(如果未指定 XSD,则针对 DTD)验证 XML 消息,然后将其发送至代理。如果找不到指定的模式或无法验证消息,则不会发送消息,而是将抛出异常。

可以在创建或更新目的地时分别使用 imqcmd create dstimqcmd update dst 命令设置 XML 验证属性。XML 验证属性应该在目的地处于非活动状态时进行设置:即,目的地没有使用方和生成方并且目的地中没有消息时。


注 –

如果在运行时无法访问 XSD,则可能需要在目的地处于活动状态时修改 XMLSchemaURIList


如果在目的地处于活动状态时(例如,生成方已连接到目的地时)设置了任何 XML 验证属性,则在生成方重新连接到代理后,更改才会生效。同样,如果由于变更应用程序要求而更改了 XSD,则必须将基于更改的 XSD 生成 XML 消息的所有客户端应用程序重新连接到代理。

如果将 reloadXMLSchemaOnFailure 属性设置为 true 并且 XML 验证失败,Message Queue 客户端运行时环境将尝试重新装入 XSD,然后再次验证消息。如果无法使用重新装入的 XSD 进行验证,客户端运行时环境将抛出异常。