本主题解释如何从通讯报文日志中捕获的通讯报文中创建固定的消息响应程序。
本章包含:
从通讯报文中创建“固定消息”虚拟资产
前提条件
请求和响应的 HTTP 数据头必须包含包含 xml 或 json 内容类型的内容类型头。
例如:
Content-Type: application/json; charset=UTF-8
Content-Type: text/xml; charset=UTF-8
消息内容必须是格式良好的;否则,自动从通讯报文中创建消息响应程序可能失败。
提示:监视控制台视图
当从通讯报文中创建消息响应器时,保持控制台视图可见是很有帮助的。此视图将显示在处理通讯报文文件时生成的任何警告、错误和信息消息。
若从通讯报文文件自动创建和部署“固定消息”消息响应器,请完成以下内容:
- 在可用的创建向导中选择 Traffic> Generate Fixed Messages 选项。
- 有关访问该向导的更多详情,请查阅 添加项目、虚拟资产和响应程序套件。
- 完成通讯报文向导的第一页,如下:
- 指定通讯报文文件的位置。
- 如果需要,更改字符编码。
- 指定所需的消息分组选项(有关详细信息,请参见下面的框),然后单击 Next。
消息分组选项
可用选项包括:
- None: 没有分组。为通讯报文文件中的每个响应消息生成一个响应器。如果希望每个请求/响应对位于单独的消息响应器中,请使用此选项。
- Based on operation/type: 根据操作或消息类型对消息进行分组。这对于包含可以通过操作或格式的消息类型(即,SOAP 主体下元素的名称、纯 XML 消息中根元素的名称或指定消息格式的消息类型)。为在通讯报文文件中发现的每个操作/类型生成一个响应器。
- Based on similar requests: 根据请求消息结构对消息进行分组。这告诉 Virtualize 分析请求消息结构并将请求/响应分组到响应程序中,以便每个响应程序将包含与具有类似结构的请求相关的响应。当消息具有相同的 DOM 树模型时,即使它们具有不同的值,也会被认为是“相似的”。此选项用于优化和简化将请求与每个消息响应器中的响应关联的规则。
- Based on similar responses: 根据响应消息结构对消息进行分组。这告诉 Virtualize 分析响应消息结构并将请求/响应对分组到响应程序中,以便每个响应程序将包含具有类似结构的响应。当消息具有相同的 DOM 树模型时,即使它们具有不同的值,也会被认为是“相似的”。此选项用于生成为数据源参数化优化的消息响应程序。由于消息响应器中的所有响应都是类似的,因此可以更容易地为每个响应器生成数据源,以创建数据源驱动的资产。
- (仅限 MQ 和 JMS)在下一向导页中指定连接设置,然后单击 下一步。
- 如下完成部署虚拟资产向导页面:
- 为将要创建的虚拟资产指定所需的名称和部署路径。它将部署在列出的端点。有关更多详情,请查阅 Configuring Individual Virtual Asset Deployment Settings。
- 单击 Next。
- 如下完成每个请求参数选择页面:
- 使用可用控件指定应该使用哪些参数值来确定虚拟资产的响应消息。您不需要配置这些选择;如果需要,可以启用默认的自动选择。有关更多详情,请查阅(下面的) Completing the Request Parameter Selection Wizard 。
- 单击 Next。
- (可选)如果希望设置动态消息(使用从传入消息提取的数据对响应消息或数据头元素进行参数化),请为要参数化的每个操作完成配置动态消息页面。完成每个向导页面后,单击 Next 转到下一个操作的页面。
- 有关如何配置动态消息的更多详情,请查阅(下面的) Completing the Configure Dynamic Messages Wizard 。
- 单击 Finish。
然后,Virtualize 创建消息响应器并将它们部署到本地虚拟化服务器。
请求消息将根据在消息集中检测到的不同操作进行分组分析。每个操作都会产生一个消息响应器。对于 SOAP 消息,直接使用 Body 下的元素名作为操作名。对于纯 XML,根元素用于确定操作。
对于 JSON 内容,将为从日志中读取的每个响应消息创建一个响应器。您将需要在 .pva 创建完成后配置所需的响应器相关标准。
完成请求参数选择向导
“请求参数选择向导”将为在通讯报文文件中检测到的每个操作提供一个步骤。在这个步骤中,Virtualize 将为每个操作/组生成一个基于“name”的 XPath;这将用于设置该操作的响应程序相关性。例如,如果 SOAP 主体下的元素名是“SubmitOrder”,那么设置到响应器相关部分的 Xpath 表达式将类似于 local-name(/*/*[local-name(.)="Body"]/*)="SubmitOrder"
注意,当消息不是 XML 时,X©Path 和参数选择应用于请求消息的转换 XML 版本。
对于属于同一操作的每组消息,将相互比较请求,以确定不同请求之间的参数。
- 使用自动选项,Virtualize 将分析请求元素中的差异,然后使用该分析的结果为该操作/组中可用的多个响应生成 XPath 表达式。目标是为每个不同的请求元素自动生成响应。如果通讯报文是 SOAP Envelope,那么只要消息共享相同的操作元素(这是 SOAP 主体下的第一个元素),就允许存在结构差异。如果通讯报文是通用 XML,那么只要消息具有相同的根节点,就允许存在结构差异。
- 如果手动选择请求参数,则可以选择一个或多个请求参数,用于生成这些多个响应 XPath。
- 如果希望控制如何生成关联,我们建议使用手动选项。自动选项用于在简单的情况下快速生成/配置。
完成“配置动态消息”向导
对于请求消息中的每个操作,Virtualize 都显示一个 Configure Dynamic Messages 向导页面。 Response 选项卡显示响应消息的所有可能元素,并允许您使用从传入请求消息中提取的值对这些元素进行参数化。 Transport Header 选项卡允许参数化数据头值和属性。
若要参数化 Response or Transport Header 选项卡中的值,请完成以下内容:
- 选择应该使用提取值的项。
- 如果要对响应消息中的元素进行参数化,请在 Response 选项卡的左窗格中的响应树中选择该元素。
- 如果要参数化头值或属性,请在 Transport Header 选项卡中选择适当的传输和类别。如果想参数化一个尚未显示的数据头值,现在就添加它。
- 选择 Parameterized,然后选择 Use Data Source Wizard。
- 在打开的向导中,完成以下内容:
- 在这一页的顶部,选择要从中提取值的传入请求消息,然后指定是否要从消息主体或消息数据头中提取值。
- 使用面板左侧的控件,指示要提取的内容并将其添加到面板右侧。后侧面板列出了为提取信息配置的值,并显示了将存储这些值的数据源列的名称(如果保留默认设置)。
- (可选项)如果希望指定额外选项(比如,如果希望更改用来存储值的列名,则希望值保存到可写数据源汇总,或者希望值存储到现有变量),或者,如果希望修改高级 Xpath 设置,则选择右侧表中合适的元素并单击 Modify。接下来,根据需求配置选项,然后单击 OK。可用选项在 每个提取元素的选项中进行描述。
单击 Finish 完成向导后,XML 数据库工具(或数据头信息数据库工具,用于数据头信息)将自动添加到生成的消息响应器中。
这些工具已经配置为执行向导中指定的提取(${} 符号将用于访问参数化的值)。例如,请注意以下消息响应器如何设置为使用从消息请求中提取并保存到 titleKeyword 列中的值:
如果想修改提取,请打开工具的配置面板,然后按照 XML 数据库 和 Header Data Bank中的描述自定义可用设置。
部署虚拟资产
如果在虚拟资产文件夹中创建 .pva,则在向导完成时,虚拟资产将自动部署到本地虚拟化服务器。否则,您可以随时将其部署到本地或远程服务器。
有关部署过程和选项的更多详细讨论,请查阅 Deploying Virtual Assets。
自定义虚拟资产
关于如何自定义消息响应程序行为的更多详情,请查阅 消息响应程序概要。