连接 IBM - MQ 时出现 jmeter(jms 点对点)错误:javax.naming.NoInitialContextException

jmeter (jms point-to-point) error while connecting IBM - MQ : javax.naming.NoInitialContextException

连接 IBM - MQ 时出现 jmeter(jms 点对点)错误:

javax.naming.NoInitialContextException: Cannot instantiate class: com.sun.jndi.fscontext.RefFSContextFactory [Root exception is java.lang.ClassNotFoundException: com.sun.jndi.fscontext.RefFSContextFactory

需要帮助解决错误。仅供参考:com.ibm.mq.allclient.jar 添加到 lib 文件夹中,32 位 jdk 1.8

jms point-to-point configuration in jemeter

JNDI configuration in mq explorer

添加 jar(复制所有 MQ Jar(随完整 Websphere MQ 安装一起提供)并将它们放入 JMeter/Lib)后遇到新错误:

Error: Response message: java.lang.IllegalStateException: QueueConnectionFactory expected, but got com.ibm.mq.jms.MQConnectionFactory

绑定文件就位 (C:\Users*****\Downloads\apache-jmeter-3.3\apache-jmeter-3.3\JNDI-Directory)

根据 oracle post 你缺少 fscontext.jar

the ClassNotFoundException for com.sun.jndi.fscontext.RefFSContextFactory is solved by adding fscontext.jar to your classpath

您可以下载here并复制到JMeter lib文件夹

您没有说明您使用的是哪个版本的 IBM MQ jar 文件,但是 com.ibm.mq.allclient.jar 是在 IBM MQ v8 中引入的,因此您必须使用 v8 或 v9。


v9 知识中心页面“What is installed for IBM MQ classes for JMS”声明如下:

The fscontext.jar and providerutil.jar files are required if your application performs JNDI lookups using a file system context.


总而言之,您需要包含以下 jar 文件:

  • com.ibm.mq.allclient.jar
  • jms.jar
  • fscontext.jar
  • providerutil.jar

有关详细信息,请参阅我对“Upgrade of Java 8 and MQ - NoClassDEfFoundError 的回答。


更新 2018-01-25

与次要错误相关:

Error: Response message: java.lang.IllegalStateException: QueueConnectionFactory expected, but got com.ibm.mq.jms.MQConnectionFactory

在以下回答中,Attila Repasi 解决了您收到的错误:

答案是:

Create a MQQueueConnectionFactory in MQExplorer instead of the MQConnectionFactory you have now.

此外,在以下回答中,Attila Repasi 描述了如何使用 IBM MQ v8 配置 JMeter 并说明了在 MQ Explorer 中可以做什么。

您需要将所需的库放在 JMeter Classpath 下的某处或设置 user.classpath 属性 以指向它们所在的文件夹。

根据得到 IBM MQ classes for Java and JMS:

.\JavaSE:

com.ibm.mq.

allclient.jar

com.ibm.mq.traceControl.jar

fscontext.jar

jms.jar

providerutil.jar

JSON4J.jar

因此,您不仅需要 allclient.jar,还需要 JavaSE 文件夹中的所有 jar

更多信息:IBM MQ testing with JMeter - Learn How