本主题提供参考,配置 SOAtest 和 Virtualize 以用于流行的 JMS 提供程序。

本章包含:

添加所需 jar 文件

若要将所需 jar 文件(下面表中所列)添加到SOAtest 和 Virtualize 类路径,请完成以下内容:

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

JNDI 身份验证

任何时候,如果需要用户名和密码来连接 JMS 系统,而 JMS 系统配置为需要对 JNDI 访问进行身份验证,则必须配置以下 JNDI 属性:

  • java.naming.security.principal=<username>
  • java.naming.security.credentials=<password>

Apache ActiveMQ

针对针对 Apache Active MQ
最小所需的 jar 文件可在 ActiveMQ 安装目录
- activemq-all-[version].jar 下找到。
典型的提供者 URL 模式tcp://hostname:61616
工厂类

JNDI 初始上下文工厂类
- org.apache.activemq.jndi.ActiveMQInitialContextFactory

默认的连接工厂 JNDI 名称
- ConnectionFactory

了解更多http://activemq.apache.org/jndi-support.html

Apache Qpid

针对针对 Apache Qpid
最小所需的 jar 文件

可在 http://qpid.apache.org/download.html的 qpid-java-client-{ver}.tar.gz 中找到。

jar 的数量根据 Qpid 版本的变化而变化。Qpid 0.8 版本下的 jar 包括以下:

  • backport-util-concurrent-2.2.jar
  • geronimo-jms_1.1_spec-1.0.jar
  • mina-core-1.0.1.jar
  • mina-filter-ssl-1.0.1.jar
  • qpid-all.jar
  • qpid-client-0.8.jar
  • qpid-common-0.8.jar
  • slf4j-api-1.6.1.jar
连接 URL JNDI 属性connectionfactory.<jndiname> 
例如:
connectionfactory.local = amqp://user:password@clientid/testpath?brokerlist='tcp://localhost:5672'
工厂类

JNDI 初始上下文工厂类
- org.apache.qpid.jndi.PropertiesFileInitialContextFactory

了解更多

https://cwiki.apache.org/qpid/how-to-use-jndi.html


GlassFish MQ

针对针对 GlassFish
最小所需的 jar 文件

GlassFish 3 - 可在 [GlassFish install directory]/glassfish/lib下找到:- gf-client.jar

注意,gf-client.jar 引用了 GlassFish 3 安装的其他几十个 jar 文件。必须引用 GlassFish 安装目录中的 gf-client.jar,以便能够找到并加载引用的 jar 文件。GlassFish 可以从 http://glassfish.java.net/加载。

GlassFish 2 - 可在 [GlassFish install directory]/lib下找到:

- appserv-admin.jar
 - appserv-deployment-client.jar
 - appserv-ext.jar
 - appserv-rt.jar
 - javaee.jar
 - install/applications/jmsra/imqjmsra.jar

典型的提供者 URL 模式iiop://yourhostname:3700
工厂类

JNDI 初始上下文工厂类
- com.sun.enterprise.naming.SerialInitContextFactory

注意,GlassFish 拥有另一个 JNDI 初始上下文工厂类,其名为 "com.sun.appserv.naming.S1ASCtxFactory"。这个类的性能很差,不应该使用。相反地,使用所提及的 SerialInitContextFactory 类,该类即既适用于 GlassFish 2 也适用于 GlassFish 3。

注意GlassFish 客户端和 GlassFish 服务端相互执行反向 DNS 查找。如果服务端没有识别到客户端的主机名,则可以向服务端的主机文件添加客户端的主机名和 IP 地址。如果客户端没有识别到服务端的主机名,则可以向客户端的主机文件添加服务端的主机名和 IP 地址。通常情况下,主机文件在 Unix 上是 /etc/hosts ,在 Windows 上是 %SystemRoot%\system32\drivers\etc\hosts。
了解更多 http://glassfish.java.net/

IBM WebSphere 应用程序服务器 (WAS)

针对针对 WAS 默认的 JMS 提供程序。Parasoft 推荐使用 IBM 的 JMS 精简型客户端,它由 WAS 7.0 或更高版本提供,并且可以与 WAS 6.0.2 及更高版本相互作用。
最小所需的 jar 文件

可在 [WAS installation dir]/runtimes
- com.ibm.ws.ejb.thinclient_7.0.0.jar
 - com.ibm.ws.orb_7.0.0.jar
 - com.ibm.ws.sib.client.thin.jms_7.0.0.jar下找到。

典型的提供者 URL 模式iiop://yourhostname:2809/
工厂类

JNDI 初始上下文工厂类
- com.ibm.websphere.naming.WsnInitialContextFactory

了解更多WebSphere 应用程序服务器网络部署,版本 7.0 文档

如果没有 WAS 7.0 或更高版本该怎么办?

如果没有使用(或没有访问)WAS 7 安装,则下载并安装可以与 WAS 6.0.2 及更高版本相互作用的 JMS 的 IBM 客户机:

  1. 从 http://www-01.ibm.com/support/docview.wss?uid=swg24012804下载 JMS 客户机安装程序 jar。
  2. 按照下载页面上的说明为 SUN JRE 安装 JMS 和 JNDI jars。安装客户端 jars 的命令类似于:
    "java -jar sibc_oeminst-o0902.06.jar jms_jndi_sun C:\ibmjms”
    客户端 jars 将安装在 lib 文件夹下。
  3. 添加 JNDI 属性 com.ibm.CORBA.ORBInit=com.ibm.ws.sib.client.ORB
    • 为了简单起见,可以在 JRE 的 lib 文件夹中 jndi.properties 文件中对这个 jndi 属性进行全局设置。
    • 对于此产品的独立构建,JRE lib 文件夹存在于 Parasoft/Test/{ver}/plugins/com.parasoft.xtest.jdk.eclipse.core.{platform}.{arch}_{ver}/jdk/jre/lib。
    • 当使用 WAS 7 试运行文件夹中的 jar 时,不需要此 JNDI 属性。

IBM WebSphere MQ (MQ Series)

针对

针对 WebSphere MQ JMS 提供程序

最小所需的 jar 文件

针对 MQ 9

可在 [WebSphere MQ installation directory]/java/lib下找到这些 jar 文件:

  • com.ibm.mq.allclient.jar.

针对 MQ 8

可在 [WebSphere MQ installation directory]/java/lib下找到这些 jar 文件:

  • com.ibm.mq.allclient.jar.

针对 MQ 7.0

可在 [WebSphere MQ installation directory]/java/lib下找到这些 jar 文件:

  • com.ibm.mq.jar
  • com.ibm.mqjms.jar
  • com.ibm.mq.commonservices.jar 
  • com.ibm.mq.headers.jar
  • com.ibm.mq.jmqi.jar
  • connector.jar
  • dhbcore.jar
  • com.ibm.mq.pcf.jar

还需要下载以下 jar 文件:

  • ME01:WebSphere MQ - 初始上下文工厂 — mqcontext.jar

针对 MQ 6.0

可在 [WebSphere MQ installation directory]/java/lib下找到这些 jar 文件:

  • com.ibm.mq.jar
  • com.ibm.mqjms.jar - connector.jar
  • dhbcore.jar
  • jta.jar

还需要下载以下 jar 文件:

  • MS0B:用于 WebSphere MQ Java 类 — com.ibm.mq.pcf.jar
  • ME01:WebSphere MQ - 初始上下文工厂 — mqcontext.jar

MQ 客户端下载

MQ 客户端中还包含 [WebSphere MQ installation directory]/java/lib 下的这些 jar 文件。IBM 不再提供 MQ 6 客户端。MQ 7 客户端再 http://www-01.ibm.com/support/docview.wss?uid=swg24019253上可用。


典型的提供者 URL 模式

yourhostname:1414/SYSTEM.DEF.SVRCONN

工厂类

WebSphere MQ JNDI 初始化上下文工厂类 - com.ibm.mq.jms.context.WMQInitialContextFactory

SSL 配置

WebSphere JMS 客户机可以通过在初始上下文中设置合适的属性来实现 SSL 连接。WebSphere MQ 和 WebSphere JMS 客户机都将为 SSL 连接设置相同的属性。

没有 JNDI 的 JMS 消息传递

在属性选项卡下,定义以下属性:
Name: Value
provider:  WebSphere MQ
queue.manager: [your queue manager name]
channel: [your channel name]
port: [port number, the default WebSphere MQ port is 1414]
有了此配置,SOAtest/Virtualize 将使用以下提供的参数创建连接工厂:

  import com.ibm.mq.jms.*;
  ...
  MQConnectionFactory cf = new MQConnectionFactory();
  cf.setHostName(hostname);
  cf.setPort(port);
  cf.setQueueManager(queuemanager);
  cf.setChannel(channel);
  cf.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);   
  cf.setFailIfQuiesce(JMSC.MQJMS_FIQ_YES);
  cf.setUseConnectionPooling(true);
 其他说明
 

IBM 的 JNDI 通过发送用户的登录名来使用 Websphere MQ 服务器对自己进行身份验证。通常情况下,用户名是在启用 SOAtest/Virtualize 之前登录到工作空间时所提供的。

如果 MQ 服务器没有识别到用户名,则工具将失败,附带错误信息 "javax.jms.JMSSecurityException:MQJMS2013:为 MQQueueManager 提供的身份验证无效"。

该错误可以通过在 Websphere MQ 服务端机器上添加 Windows 用户账号解决。此账户应该1)与本地机器上的账户具有相同的用户名,该机器即SOAtest 和 Virtualize正在运行的机器;2)作为 "mqm" IBM WebSphere MQ 管理组的成员。

作为一种选择,可以通过更改 user.name Java 系统属性值来使用不同的用户名。该系统属性可以配置,通过启动SOAtest 和 Virtualize使用 soatest/virtualize.exe -J-Duser.name=username 其中 username 是要使用的用户名。在某些使用配置中,通过 soatest/virtualize.exe -J-Duser.name= 使用空用户名可以工作。对于 user.name 属性使用 SYSTEM 也可以在某些配置中工作。 

还可以在测试套件执行期间更改 Java 系统属性,通过使用扩展工具调用 SUN 的 Java API 中的 java.lang.System.setProperty() 方法。

有关该错误的更多详情,请查阅 http://www.mqseries.net/phpBB/view-topic.php?t=40640
 

了解更多

http://www-01.ibm.com/software/integration/wmq/library/

http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/topic/com.ibm.mq.csqzaw.doc/jm10320_.htm

JBoss JMS

针对针对 JBoss JMS,以下 jar 列表基于 JBoss 5.0
最小所需的 jar 文件

可在 [JBoss install dir]/client
 - jboss-javaee.jar
 - jnp-client.jar
 - jboss-logging-spi.jar
 - jboss-messaging-client.jar
- jboss-aop-client.jar
 - jboss-remoting.jar
 - jboss-common-core.jar
 - trove.jar
 - javassist.jar
 - jboss-mdr.jar
 - concurrent.jar
 - log4j.jar
 - jboss-serialization.jar下找到。

典型的提供者 URL 模式yourhostname
工厂类

JNDI 初始上下文工厂类
- org.jnp.interfaces.NamingContextFactory

打开消息队列(OpenMQ)

注意,OpenMQ 可以通过独立运行,也可以作为 Glassfis App 服务端的一部分运行,在这里它被称为“Glassfish MQ”。如果正在使用 Glassfish 中的 OpenMQ,请查阅 GlassFish 部分。

针对针对 OpenMQ 服务器
最小所需的 jar 文件

可在 [OpenMQ install dir]/mq/lib
 - fscontext.jar  
 - imq.jar
 - jms.jar下找到。

典型的提供者 URL 模式yourhostname
工厂类

JNDI 初始上下文工厂类
- com.sun.jndi.fscontext.RefFSContextFactory

了解更多http://mq.java.net

Oracle 高级队列(AQ)

针对针对 Oracle 高级队列(AQ)
最小所需的 jar 文件

可从 Oracle 数据库安装中找到:
- server/rdbms/jlib/aqapi.jar 
- server/jdbc/lib/ojdbc6.jar

从 Oracle Weblogic 服务器安装中找到:
- server/lib/aqapi.jar 
- server/lib/ojdbc6.jar

提供程序 URL保留此字段为空。
JNDI 初始上下文工厂类oracle.jms.AQjmsInitialContextFactory
连接工厂 JNDI 名称

其中一个以下项:
- QueueConnectionFactory
- TopicConnectionFactory
- ConnectionFactory
- XAQueueConnectionFactory
- XATopicConnectionFactory
- XAConnectionFactory

所需的 JNDI 属性

java.naming.security.principal=<username>  
java.naming.security.credentials=<password>
db_url=jdbc:oracle:thin:@host:port:dbName

队列名/主题名

队列名以 Queues/ 为前缀,主题名以 Topics/为前缀。例如:
Queue: Queues/<queue_name> 
Topic: Topics/<topic_name>

注意Oracle 数据源老版本中的 aqapi.jar(如 10g)可能缺少初始上下文工厂类。使用 Oracle 数据库 11g 及更高版本的 jar 文件。最新版本的 Oracle 数据库 Express 版本(XE)可以在 oracle.com中下载:
Oracle 数据库 Express 版本 11g 发行版 2
了解更多与 Oracle AQ JMS 相互作用

Oracle BEA WebLogic

针对针对 Oracle BEA WebLogic
最小所需的 jar 文件(Thin 客户机)*

可在 [weblogic home]/wlserver_x/server/lib
 - wljmsclient.jar 
 - wlclient.jar下找到

注意,可能需要其他 jar 文件。我们推荐使用完整客户端;这一点使您不必寻找和添加许多 jar。

最小所需的 jar 文件(Full 客户机)*按照说明中所描述那样为“Creating a wlfullclient5.jar for JDK 1.5 client applications.”构建单个 wlfullclient5.jar。
典型的提供者 URL 模式

Thin 客户机:
iiop://yourhostname:7001

Full 客户机:
t3://yourhostname:7001

工厂类

JNDI 初始上下文工厂类:
- weblogic.jndi.WLInitialContextFactory

了解更多http://docs.oracle.com/cd/E12840_01/wls/docs103/client/jarbuilder.html

Progress Sonic MQ/ESB

针对针对 Progress Sonic MQ/ESB
最小所需的 jar 文件

可在 [sonic install dir]/MQ7.x/lib
- mfcontext.jar 
- broker.jar
- sonic_Client.jar下找到。

注意,不能一起使用 SonicMQ 的 broker.jar 和 TIBCO 的 tibcojms.jar。

典型的提供者 URL 模式tcp://yourhostname:2506
工厂类

JNDI 初始上下文工厂类
- com.sonicsw.jndi.mfcontext.MFContextFactory

了解更多请参考 SonicMQ 应用程序项目指南、Appendix A (使用 Sonic JNDI SPI),也可以参考其他相关部分。

RabbitMQ

针对针对 RabbitMQ
最小所需的 jar 文件

Maven's Central Repository下载客户端库。

rabbitmq-jms-<version>.jar

.Bindings 文件示例#此文件由 JNDI FSContext 使用。
#Wed Jan 31 15:36:15 PST 2018
ConnectionFactory/FactoryName=com.rabbitmq.jms.admin.RMQObjectFactory
ConnectionFactory/ClassName=javax.jms.ConnectionFactory
ConnectionFactory/RefAddr/0/Type=name
ConnectionFactory/RefAddr/0/Encoding=String
ConnectionFactory/RefAddr/0/Content=jms/ConnectionFactory
ConnectionFactory/RefAddr/1/Type=type
ConnectionFactory/RefAddr/1/Encoding=String
ConnectionFactory/RefAddr/1/Content=javax.jms.ConnectionFactory
ConnectionFactory/RefAddr/2/Type=factory
ConnectionFactory/RefAddr/2/Encoding=String
ConnectionFactory/RefAddr/2/Content=com.rabbitmq.jms.admin.RMQObjectFactory
ConnectionFactory/RefAddr/3/Type=host
ConnectionFactory/RefAddr/3/Encoding=String
ConnectionFactory/RefAddr/3/Content=host.company.com
ConnectionFactory/RefAddr/4/Type=port
ConnectionFactory/RefAddr/4/Encoding=String
ConnectionFactory/RefAddr/4/Content=5672
典型的提供者 URL 模式

包含 .bindings 文件的目录路径。

file://C:/JNDI/rabbitMQ/

初始上下文com.sun.jndi.fscontext.RefFSContextFactory
连接工厂

JNDI 初始上下文工厂类
- ConnectionFactory

Solace JMS

针对针对 Solace JMS
最小所需的 jar 文件commons-lang-<version>.jar
sol-common-<version>.jar
sol-jcsmp-<version>.jar
sol-jms-<version>.jar
典型的提供者 URL 模式smf://<host>:<port>
工厂类

JNDI 初始上下文工厂类
 - com.solacesystems.jndi.SolJNDIInitialContextFactory
没有默认名称;特定的 JNDI 名称需要查询连接工厂。

必须设置其他 JNDI 属性 Solace_JMS_VPN=myvpn ,以便获得访问连接工厂的权限。没有默认的 vpn 名称。

Sun Java 系统消息队列(Sun MQ)

针对针对 Sun MQ 服务器
最小所需的 jar 文件

可在 [Sun MQ install dir]Sun/MessageQueue/mq/lib
- fscontext.jar
- imq.jar
- jms.jar下找到。

典型的提供者 URL 模式yourhostname
工厂类

JNDI 初始上下文工厂类
- com.sun.jndi.fscontext.RefFSContextFactory

了解更多请查阅 Sun Java 系统消息队列管理 3.x/4.x 指南,快速启动(Quick-Start)章节教程。此文档可从 http://docs.sun.com/app/docs/prod/message?l=en#hic下载。在该文档中,导航到 Software> Application & Integration Services> Message Queue

TIBCO EMS

针对针对 TIBCO EMS
最小所需的 jar 文件

可在 [TIBCO install dir]/ems/clients/java
- tibjms.jar
- tibcrypt.jar (SSL 要求)下找到。

注意,不能一起使用 SonicMQ 的 broker.jar 和 TIBCO 的 tibcojms.jar。

典型的提供者 URL 模式tcp://yourhostname:7222
yourhostname (if using default port numbers)
工厂类

JNDI 初始上下文工厂类
- com.tibco.tibjms.naming.TibjmsInitialContextFactory

SSL 配置

必须配置以下 JNDI 属性:
- com.tibco.tibjms.naming.security_protocol=ssl
- com.tibco.tibjms.naming.ssl_enable_verify_host=false
- com.tibco.tibjms.naming.ssl_enable_verify_hostname=false

对于双向 SSL,还需配置以下其他属性:
- com.tibco.tibjms.naming.ssl_identity=<path to client keystore>
 - com.tibco.tibjms.naming.ssl_password=<keystore password>
 - com.tibco.tibjms.naming.ssl_trusted_certs=<path to trusted certificate> 
- com.tibco.tibjms.naming.ssl_vendor=j2se
 - com.tibco.tibjms.naming.ssl_auth_only=true/false

注意

任何时候,连接到 Tibco EMS 需要用户名和密码,都必须配置以下 JNDI 属性:
- java.naming.security.principal=<username> 
 - java.naming.security.credentials=<password>

了解更多请参考 TIBCO 企业版消息服务用户指南,第 9 章:开发 EMS 客户端应用程序> 程序员检查表


Sun JMS

SOAtest 和 Virtualize 绑定一个 Sun JNDI 实现,使用 com.sun.jndi.fscontext.RefFSContextFactory 作为 “C:\JNDIRoot” 或类似内容的初始上下文和用户定义的提供程序(目录),存储目录中的 JNDI 绑定以及本地硬盘上的文件。

在使用 Sun 实现时,必须使用 .binding 文件填充 “C:\JNDIRoot” 目录,以便 fscontext 可以成功查找 ConnectionFactory 和队列或主题对象。Parasoft 将 SOAtest/Virtualize 安装目录(/examples/jms/JndiFileProviderTest.java)中找到的示例放在一起,该目录创建了 .bings 文件。

其他 JMS 提供程序

针对其他 JMS 提供程序,请参阅有关如何配置 JMS 客户机以与系统通信的供应商指南。

  • No labels