本主题讨论 SonicMQ 传输,它作为 JMS 传输的扩展实现。

章节目录:

除了 JMS 消息类型之外,SOAtest 和某些 Virtualize 支持工具以及供应操作工具还支持 SonicMQ 传输的 MultiPartMessage。对于 JMS 消息类型,您需要使用 JMS 传输。关于 JMS 传输的更多信息,请参阅 JMS

对于出站消息传送,MultiPartMessage 由单个部分构造,该部分将请求消息包装为“text/xml”类型。用户可以通过部件内容 ID 字段指定部件的“Content-ID”头字段。对于入站消息传递,JMS 和 SonicMQ 传输都可以使用多个部分解析 MultiPartMessage。

为 SonicMQ 创建新的测试

若要配置 SOAtest 来创建访问 SonicMQ 的测试:

  1. 正常完成 WSDL 测试创建向导(详情请参阅从 WSDL 中创建测试)。
  2. 双击将使用 SonicMQ 的测试的测试节点。
  3. 在右侧 GUI 面板中,打开传输选项卡,然后从传输下拉菜单选择 SonicMQ。各选项将显示在传输下拉菜单下:
    • 连接设置
    • 队列/主题
    • 消息传送模板
    • 消息交换模式
    • 消息类型
    • 请求消息属性
    • 响应消息关联性
  4. 按照以下部分的描述配置所需的选项。

配置 SonicMQ 选项

从相应工具传输选项卡内的传输菜单选择 SonicMQ 之后,将在传输选项卡的左窗格显示以下选项:

连接设置

连接设置包含设置属性选项卡。属性选项卡是可选项,它允许执行传递给 JNDI javax.naming.InitalContext 构造器的其他属性;除了在设置选项卡中指定的生产者 URL 和初始化环境工厂属性。设置选项卡包含:

  • 如果为 SonicMQ 连接创建了共享属性,则将提供一个下拉菜单,您可以从中选择使用本地设置使用共享设置
    • 如果选择使用共享设置,则将显示第二个下拉菜单,您可以从中选择工具将使用的所需全局 SonicMQ 设置。更多信息,请参阅 添加全局属性添加全局测试组件属性添加全局属性


    • 如果选择使用本地设置,或者如果没有指定任何共享属性,则可以配置连接设置的剩余部分。
  • 生产者 URL:指定传递给 JNDI javax.naming.InitialContext 构造器名为 JNDI javax.naming.Context.PROVIDER_URL 属性的值。
  • 初始化环境:指定作为名为 javax.naming.Context.INITIAL_CONTEXT_FACTORY 属性的字符串值传递给 JNDI javax.nam-ing.InitialContext 的完全限定类名字符串。
  • 连接工厂:传递给 javax.naming.InitialContext 中的 lookup() 方法以创建 javax.jms.QueueConnectionFactory 或 javax.jms.TopicConnectionFactory 实例。

除了设置选项卡,连接设置还包括:

  • 队列连接授权:允许用户提供用户名和密码来创建队列连接。启用执行授权选项并输入用户名密码以验证请求。如果未使用正确的用户名和密码,则不会对请求进行身份验证。此处提供的用户名和密码传递给 javax.jms.QueueConnectionFactory 类中的 createQueueConnection() 方法,以便获得 javax.jms.QueueConnection 实例。

  • 保持激活连接:选择通知测试是否共享或关闭当前连接。共享连接被返回到连接池,以便在整个测试套件中使用。连接池的生命圈如下所示:
    • 对于单个测试,其将在测试执行结束被销毁。
    • 对于测试套件,其将在测试套件执行结束被销毁。

队列/主题

队列/主题设置包括以下选项:

  • JMS Destination:指定将消息发送到何处的队列名称(如果使用点对点)或主题名称(如果使用发布和订阅)。
  • JMS ReplyTo:指定从何处获得响应消息的队列名称(如果使用点对点)或主题名称(如果使用发布和订阅)。如果选中的是临时而不是,则这可以是临时队列。

消息传送模板

指定如何在应用程序之间发送消息。选择点对点发布与订阅

消息交换模式

指定是 SOAtest 接收响应还是 Virtualize 接收响应。如果选择 Get 响应,SOAtest 或 Virtualize 发送消息并接收响应。如果不选择 Get 响应,SOAtest 或 Virtualize 只发送消息不接收响应。

如果选择 Get 响应,则还可以启用发送消息前在 JMSReplyTo 接收站创建消息使用方。如果希望响应很快便可在 JMSRepltTo 主题上可用,则应启用此选项确保响应消息发布之前,SOAtest 或 Virtualize 订阅给应答主题。

此选项不可与使用请求 JMSCorrelationID 匹配响应 JMSCorrelationID 混合使用,因为 JMS 规范要求供应商在消息发送后生成 JMSMessageID。因此,没有办法使用该关联(选择器)在响应目的地上创建使用者,直到消息设置好并且 JMSMessageID 可用之后。 

消息类型

允许从下拉菜单中选择消息类型。SonicMQ 消息是一个 Java 对象,它包含在 SonicMQ 客户端之间传输的数据。可使用以下消息类型:

  • progress.message.jclient.MultipartMessage

部分内容 ID

一个 Sonic MultipartMessage 可以有多个部分。每个部分都有自己的名称(ID)和内容。SOAtest 和 Virtualize 支持使用单个部件发送 MultipartMessages 消息。该字段指定部分的名称,内容由请求区域定义,如表单输入、字面量、字面量 XML (SOAtest) 等。SOAtest 与 Virtualize 支持接收包含多个部分的 MultipartMessage,并将所有部分的内容以 XML 格式输出到工具的响应输出中。

请求消息属性 

可选项。它允许要设置到 javax.jms.Message 对象的任何其他属性值,然后将其发送到队列或发布到主题。这些包括预定义属性,这些属性被设置为使用一个与 javax.jms.Message 或 setStringProperty() 方法提供的任何自定义属性。

响应消息关联性 

响应消息关联性设置包括以下选项:

  • 使用请求 JMSMessageID 匹配响应 JMSCorrelationID:如果选择该选项,术语 JMSCorrelationID = '[msgId]' 将被附加到选择器表达式之后,其中 msgId 是从传出(请求)javax.jms.Message(使用 getJMSMessageID() 方法)中动态生成的。实际上,这会导致工具阻塞,直到具有指定关联 id 的消息在队列(或主题)中可用,并且它只检索特定的消息,而不检索队列(或主题)中的任何消息。如果没有监控选择器条件的消息,工具将在超时量过期后超时。
  • 使用请求 JMSCorrelationID 匹配响应 JMSCorrelationID:如果选择该选项,术语 JMSCorrelationID = '[correlationId]' 将附加到选择器表达式后,其中 correlationId 从消息属性部分中的 JMSCorrelationID 属性检索到。该选项只在此属性添加到消息属性部分时才可启用。实际上,这会导致工具阻塞,直到具有指定关联 id 的消息在队列(或主题)中可用,并且它只检索特定的消息,而不检索队列(或主题)中的任何消息。如果没有监控选择器条件的消息,工具将在超时量过期后超时。
  • 附加的选择器表达式术语:(可选)输入一个值作为消息过滤器。有关指定选择器的提示, 请参阅使用消息选择器过滤器(SOAtest)或使用消息选择器过滤器(Virtualize)。

使用 SonicMQ 为客户端输出消息对象

可以添加消息对象输出给使用 SonicMQ 传输的工具。例如,连接到使用 SonicMQ 工具的扩展工具将有权访问响应 SonicMQ 消息。在 ObjectMessage 用例中,可以使用 getter 和 equals() 方法来验证响应,从而创建回归控制。此外,您还可以将比较工具链接到响应通讯报文,如果响应是一个 ObjectMessage,则 SOAtest 或 Virtualize 将会把插入的可序列化对象转换为 XML 格式并执行 XML 比较。这样您就可以使用数据库值,忽略 Xpath 差异等。

要实现以上目的,请完成以下步骤:

  1. 右键点击 SOAP 客户端或消息传送客户端节点,或者您希望为其添加输出的虚拟化工具节点,并从快捷菜单中选择添加输出。将打开添加输出向导。

  2. 在添加输出向导的左窗格中选择响应> 消息对象,然后选择右侧窗格中的新建输出现有输出以及所需工具(例如,扩展工具)。
  3. 点击完成。SOAtest 或 Virtualize 将新输出添加到所选客户端节点。

  • No labels