【问题标题】:JMSCS0002 from Spring JMS and IBM Websphere MQ来自 Spring JMS 和 IBM Websphere MQ 的 JMSCS0002
【发布时间】:2017-01-17 17:49:39
【问题描述】:

我在 Stack Overflow 上看到了一两个关于此错误的问题,但我仍然无法解决它,所以我想我会提出自己的问题。

这是我的问题:

我正在使用 Spring 和 Spring 的 JMSTemplate 来执行一些消息传递和队列工作。我正在尝试从队列中读取。如果我的逻辑在我的代码中是正确的,我不是 100% 肯定的,但是每当我尝试运行我的应用程序时,我都会遇到这个异常(我只包含了最后一部分):

Caused by: com.ibm.msg.client.commonservices.CSIException: JMSCS0002
    at com.ibm.msg.client.commonservices.workqueue.PIWorkQueueManager.enqueueItem(PIWorkQueueManager.java:67)
    at com.ibm.msg.client.commonservices.workqueue.WorkQueueManager.enqueue(WorkQueueManager.java:225)
    at com.ibm.msg.client.commonservices.workqueue.WorkQueueManager.enqueue(WorkQueueManager.java:194)
    at com.ibm.msg.client.wmq.common.internal.WMQThreadPool.enqueue(WMQThreadPool.java:91)

现在我相当肯定这与我的代码无关,因为无论我如何更改逻辑,如果我尝试调用JMSTemplate 提供的任何方法,我都会收到此异常。在做了一些研究(基于其他堆栈溢出答案)之后,我认为它与我的类路径的设置方式有关。以下是这些问题的链接:

One 和Two

除此之外,这是我在 IBM 的 site 上找到的一些信息:

要为 JMS 应用程序编译和运行 WebSphere MQ 类,请使用 您的平台的 CLASSPATH 设置如表 1 所示。

CLASSPATH=MQ_INSTALLATION_PATH\java\lib\com.ibm.mqjms.jar; MQ_INSTALLATION_PATH\tools\jms;

我已经尝试过了,但它似乎仍然让我失望。这是我在 .bat 文件中为我运行的应用程序添加的内容:

c:\java\jre6\bin\javaw -cp "C:\ussco\wmsflgint\mqs\mqjms-7.5.0.0.jar; C:\ussco\wmsflgint\mqs\mq-7.5.0.0.jar; C:\ussco\wmsflgint\mqs\headers-1.4.2.jar; C:\ussco\wmsflgint\mqs\jmqi-7.5.0.0.jar;" -Xmx256M ....(后面还有更多,但我觉得不相关)

我没有正确添加这个吗?

谢谢

【问题讨论】:

  • 我认为您的类路径中缺少 com.ibm.mq.commonservices.jar。尝试添加这个 jar。

标签: java eclipse spring jar ibm-mq


【解决方案1】:

我刚刚遇到了与队列侦听器相同的问题。解决方案是在 Spring 项目的 src/main/resources/META-INF 目录下放置一个文件 compinfo.properties。该文件应设置两个属性的值:

CompList: comp1
comp1_CompClass: com.ibm.msg.client.commonservices.j2se.J2SEComponent

或者您可以更改 jar com.ibm.msg.client.commonservices.j2se.jar 中的属性 (comp1_CompClass) 值。它具有相同的效果,尽管我怀疑它是否合法,因为版权。 希望它会有所帮助并为某人节省几个小时。

【讨论】:

  • 为我工作!从 7.1.0.7 升级到 7.5.0.4 并从 rar 文件重新打包 jar 时遇到问题,该 rar 文件还包含一个 compinfo.properties 文件以及这些属性的其他值。你从哪里得到的信息?
  • 我无意中在 VCS 历史中找到了解决方案。然后我试图在互联网上找到更有意义的解释,但没有成功。
【解决方案2】:

这里的问题是您一直在复制和重命名 IBM MQ jar 文件,因此在运行时没有完整的 Java 类路径集。这可能会导致各种问题和意外异常,例如您遇到的异常。

请注意,复制 MQ jar 文件、重命名它们和/或将它们捆绑到应用程序中是 IBM 支持人员不允许的,这会使 MQ 条款和条件无效。 (对于将 V8 和 V9 可再发行客户端和 allclient 捆绑到应用程序中的规则略有不同;但您在这里没有使用它)。

如果您将 MQ 客户端正确安装到您的系统上(您应该这样做),然后使用您在知识中心中找到的说明来引用 com.ibm.mq.jar 文件中的类Java 应用程序或 com.ibm.mqjms.jar 用于 Java 类路径上 JMS 应用程序的类,您的问题将得到解决。

【讨论】:

  • 好的,所以我将我的类路径更新为:-cp "C:\Program Files (x86)\IBM\WebSphere MQ\java\lib\com.ibm.mqjms.jar" "C:\Program Files (x86)\IBM\WebSphere MQ\java\lib\com.ibm.mq.commonservices.jar"; "C:\Program Files (x86)\IBM\WebSphere MQ\tools\jms"; ,现在我收到错误:Cannot find main class C:\Program Files (x86)\IBM\WebSphere MQ\java\lib\com.ibm.mq.commonservices.jar
  • 嗨。您没有正确配置类路径,因为条目之间有空格。供参考:docs.oracle.com/javase/7/docs/technotes/tools/windows/… 无论如何,为什么在没有必要且在 IBM MQ KC 页面中未提及的情况下将 com.ibm.mq.commonservices.jar 文件显式添加到类路径中?
  • 我将其编辑为:c:\java\jre6\bin\javaw -cp "C:\Program Files (x86)\IBM\WebSphere MQ\java\lib\com.ibm.mqjms.jar"; ,如 IBM MQ 页面中所列,但我仍然收到此异常。没有空格,因为根据 IBM 不需要其他 jars
猜你喜欢
  • 2013-01-09
  • 2012-08-27
  • 1970-01-01
  • 2020-09-29
  • 2016-07-17
  • 2018-10-13
  • 1970-01-01
  • 2016-10-31
  • 2011-11-28
相关资源
最近更新 更多