本主题介绍了配置 SOAtest 和 Virtualize (通过所选定的支持工具和提供操作工具) 以访问 IBM MQ 所要求的步骤。

本章包含:

本主题涉及在 IBM WebSphere MQ Java API 上测试服务,而不是在标准 JMS API 上测试服务。如果您打算使用功能 JMS API 发送和接收来自 IBM WebSphere MQ 的消息,请选择 JMS 传输选项并引用 JMS

向类路径添加必要的 Jar 文件 

若要使用 MQ 选项,必须添加 WebSphere MQ 客户端或服务器安装中的 jar。MQ 客户端可以在 http://www-01.ibm.com/support/docview.wss?uid=swg24042176进行下载。

关于 WebSphere MQ 9,要求 jar:

关于 WebSphere MQ 8,要求 jar:

关于 WebSphere MQ 7,要求 jar:

关于 WebSphere MQ 6 及更早版本,要求 jar:

针对所有版本,这些 jar 文件可以在 [WebSphere MQ Installation directory]/java/lib中找到。

若要向 SOAtest 或 Virtualize 类路径添加这些 jar 文件,请完成以下内容:

  1. 选择 Parasoft> Preferences
  2. 打开 Parasoft> System Properties 页面。
  3. 单击 Add JARS 按钮,选择并勾住需要添加的 JAR 文件(如上所述)。

配置 MQ 选项

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

MQ 地址

MQ 地址选项分为两类:Connection Settings 和 Authentication

在指定 MQ 连接设置时,可以在以下模式之间进行选择:

如果正在使用默认模式,请完成以下字段:

选项
说明
Host指定运行 IBM MQ 的主机名。
Port指定正在运行 IBM MQ 的端口(默认为 1414)。
Channel指定服务端定义的通道名。
Queue manager指定队列管理器的名称。
Put queue指定发送消息的队列。
Get queue指定从哪个队列检索消息。


如果正在使用 CCDT 模式,请完成以下字段...

选项
说明
CCDT file指定 CCDT 文件(带有 .tab 扩展名)的位置。 
Queue manager指定队列管理器的名称。
Put queue指定发送消息的队列。
Get queue指定从哪个队列检索消息。

身份验证

选择 Perform Authentication 多选框,输入验证请求的 Username 和 Password 。如果未使用正确的用户名和密码,则不会对请求进行身份验证。

消息交换模式

消息交换模式可以使用以下选项:

MQRFH2 数据头

该部分允许配置 MQRFH2 数据头,它用于将消息传递给消息代理并从该消息代理中传递消息,这个消息代理属于 WebSphere Message Broker (如 http://www.ibm.com/support/knowledgecenter/SSKM8N_7.0.0/com.ibm.etools.mft.doc/aq06920_.htm上所述)。 

在 MQRFH2 Header 区域,可以配置请求消息头的不同部分,然后 SOAtest 或 Virtualize 将根据指定的设置创建 "folders" 的数据头。 

Put 消息

Put Messages 具有以下可用选项:

Get Messages

Get Messages 可以使用以下选项:

队列管理器选项

Queue Manager Options 可以使用以下选项:

MQ 队列管理器属性

MQ Queue Manager Properties可以使用以下选项:

SSL

SSL 可以使用以下选项:

如果 MQ 通道不要求客户端对其自身进行身份验证,则不需要提供 Key Store 和 Key Store Password 。

一旦通过指定 CipherSuite 和运行工具尝试 SSL 连接,信任库、密匙库和密匙库密码都不可更改。  如果它们被更改了,则需要重新启动 SOAtest 或 Virtualize,这些更改才会生效。

如果使用密匙库,则将需要下载并安装长度不受限制的 Java 加密扩展。有关更多详情,请查阅 JCE 前提条件

Scripting Hook

Scripting Hook 选项允许通过使用脚本语言(如 Jython、Java Groovy 和 JavaScript)自定义 MQ 属性。

如果需要使用脚本工具的更多详细信息,请参考教程的脚本(Scripting)章节。对于脚本 API 列表,选择 Parasoft> Help,然后查找标题为 "Parasoft SOAtest Extensibility API" (适用于 SOAtest) 或 "Parasoft Virtualize Extensibility API" (适用于 Virtualize)的书。

以下时脚本访问密匙:

例如,如果要将 put 消息的有效期更改为 999:

from com.ibm.mq import * 
def changeExpiry(context):
 putMessage = context.get("mqPutMessage")
 putMessage.expiry = 999

一旦使用上述脚本运行完成,注意,Traffic 数据头中的 Expiry 字段将更改为 999.

注意:  Add MQ Hook 选项卡中设置的任何选项都将覆盖并优先于其他选项卡中设置的任何选项。

解释 WebSphere MQ 错误消息

当出现错误时,MQ 将返回一个错误原因码。SOAtest & Virtualize 错误消息报告这些相同的原因码,以便用户解释它们。  关于 MQ 原因码及其意义的列表,请参考 http://www.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.tro.doc/q040710_.htm上的 IBM Knowledge Center。

发送数据和接收数据 - 最佳实践

以下是使用客户端工具(如,SOAP 客户端、REST 客户端、消息传递客户端,等等)发送和接收字符数据的最佳实践。

Put Messages

在发送字符数据(如 XML、CSV、固定长度或纯文本)时,格式类型必须设置为 MQFMT_STRING 常量的值,该常量即“MQSTR”。

对于 SOAP 客户端工具,用来编码请求的字符集是通过使用工具的 Misc tab> Outgoing Message Encoding 选项来指定的。  



其他可用工具(如,REST 客户端、消息传递客户端)使用产品 Misc 首选项中配置的字符编码。



可以使用以下选项:

如果指定不同编码,则 MQ 消息的字符集将默认为 MQCCSI_Q_MGR,它意指“消息中的字符数据存在于队列管理器的字符集中”。

Get Messages

应该在客户端工具的 MQGetMessageOptions (在 Transport 选项卡中)中启用 MQGMO_CONVERT 框。



这将指示队列管理器将消息转化为客户端工具的字符集。如果信息的原始字符集不受客户端(IBM_037,IBM_437,等)支持,那么这一点非常重要。  

用来执行转换的字符集配置与 put 消息的字符集相同(如上所述)。