本主题讨论 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 面板中,打开 Transport 选项卡,然后从 Transport 下拉菜单选择 SonicMQ 。各种选项将显示在 Transport 下拉菜单下:
    • Connection Settings
    • Queue/Topic
    • Messaging Model
    • Message Exchange Pattern
    • Message Type
    • Request Message Properties
    • Response Message Correlation
  4. 按照以下部分的描述配置所需的选项。

配置 SonicMQ 选项

从合适工具的 Transport 选项卡内的 Transport 下拉菜单选中 SonicMQ 之后,将在 Transport 选项卡的左窗格显示以下选项:

连接设置

Connection Settings 包含 Settings 和 Properties 选项。属性选项卡是可选项,它允许执行传递给 JNDI javax.naming.InitalContext 构造器的其他属性;除了在 Settings 选项卡中指定的 Provider URL 和 Initial Context factory 属性。Settings 选项卡包含:

  • 如果为 SonicMQ 连接创建了共享属性,则将提供一个下拉菜单,您可以从中选择 Use Local Settings 或 Use Shared Property
    • 如果选择 Use Shared Property,则将显示第二个下拉菜单,您可以从中选择工具将使用的所需全局 SonicMQ 设置。有关更多详情,请查阅 添加全局属性添加全局测试组件属性添加全局属性


    • 如果选择 Use Local Settings ,或者如果没有指定任何共享属性,则可以配置连接设置的剩余部分。
  • Provider URL: 指定传递给 JNDI javax.naming.InitialContext 构造器名为 JNDI javax.naming.Context.PROVIDER_URL 属性的值。
  • Initial Context: 指定作为名为 javax.naming.Context.INITIAL_CONTEXT_FACTORY 属性的字符串值传递给 JNDI javax.nam-ing.InitialContext 的完全限定类名字符串。
  • Connection Factory: 传递给 javax.naming.InitialContext 中的 lookup() 方法以创建 javax.jms.QueueConnectionFactory 或 javax.jms.TopicConnectionFactory

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

  • Queue Connection Authentication: 允许用户提供用户名和密码来创建队列连接。选择 Perform Authentication 复选框,输入 Username 和 Password 以对请求进行身份验证。如果不使用正确的用户名和密码,将不会对请求进行身份验证。将此处提供的用户名和密码传递给 javax.jms.QueueConnectionFactory 类中的 createQueueConnection() 方法,以便获得 javax.jms.QueueConnection 实例。

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

Queue/Topic

Queue/Topic 设置包括以下选项:

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

Messaging Model

指定如何在应用程序之间发送消息。选择 Point to Point 或 Publish and Subscribe

Message Exchange Pattern

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

如果选择 Get Response ,您还可以 在发送消息之前在 JMSReplyTo 目的地上启用 Create consumer 。如果预期响应在 JMSReplyTo 主题上很快可用,则应启用此选项,以确保 SOAtest 或 Virtualize 在发布响应消息之前订阅了应答主题。

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

Message Type

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

  • progress.message.jclient.MultipartMessage

部分内容 ID

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

Request Message Properties 

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

响应信息关联 

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

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

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

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

要做到这一点,请完成以下步骤:

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

  2. 在 Add Output 向导的左窗格中选择 Response> Message Object ,然后选择右侧窗格中的 New Output 或 Existing Output 以及所需工具(例如,扩展工具)。
  3. 单击 Finish 按钮。SOAtest 或 Virtualize 将新输出添加到所选客户端节点。

  • No labels