Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当服务器端出现错误时,WebSphereAPI是否总是提供MQ原因码?_Java_Ibm Mq - Fatal编程技术网

Java 当服务器端出现错误时,WebSphereAPI是否总是提供MQ原因码?

Java 当服务器端出现错误时,WebSphereAPI是否总是提供MQ原因码?,java,ibm-mq,Java,Ibm Mq,在尝试从队列中提取消息时,我遇到以下错误 Original thrown object message: com.ibm.msg.client.wmq.v6.jms.internal.ConfigEnvironment$1: MQJMS2002: failed to get message from MQ queue. Stack trace:com.ibm.msg.client.wmq.v6.jms.internal.ConfigEnvironment$1: MQJMS2002: failed

在尝试从队列中提取消息时,我遇到以下错误

Original thrown object message: com.ibm.msg.client.wmq.v6.jms.internal.ConfigEnvironment$1: MQJMS2002: failed to get message from MQ queue.
Stack trace:com.ibm.msg.client.wmq.v6.jms.internal.ConfigEnvironment$1: MQJMS2002: failed to get message from MQ queue.
        at com.ibm.msg.client.wmq.v6.jms.internal.ConfigEnvironment.newException(ConfigEnvironment.java:379)
        at com.ibm.msg.client.wmq.v6.jms.internal.MQMessageConsumer.getMessage(MQMessageConsumer.java:3082)
        at com.ibm.msg.client.wmq.v6.jms.internal.MQMessageConsumer.receiveInternal(MQMessageConsumer.java:4544)
        at com.ibm.msg.client.wmq.v6.jms.internal.MQMessageConsumer.receive(MQMessageConsumer.java:4032)
        at com.ibm.msg.client.jms.internal.JmsMessageConsumerImpl.receiveInboundMessage(JmsMessageConsumerImpl.java:787)
        at com.ibm.msg.client.jms.internal.JmsMessageConsumerImpl.receive(JmsMessageConsumerImpl.java:487)
        at com.ibm.mq.jms.MQMessageConsumer.receive(MQMessageConsumer.java:217)
        at com.myproject.mqqueue.JMSMQTest.extractMessages(JMSMQTest.java:220)
我可以看到连接已正确建立,并且在尝试提取消息时被击中。当前深度也是20,我无法提取相同的深度

如果我做错了什么或需要进行一些配置,请有人告诉我。

此外,如果是像MQRC zzzz这样的服务器端问题,是否必须有Mq原因码

添加了有关跟踪的更多信息:

Caused by: java.lang.NullPointerException
        at com.ibm.msg.client.wmq.v6.jms.internal.JMSMessage._parseMcdFolder(JMSMessage.java:3486) 
        at com.ibm.msg.client.wmq.v6.jms.internal.JMSMessage._parseMcdFolderUtf8(JMSMessage.java:3627) 
        at com.ibm.msg.client.wmq.v6.jms.internal.MQJMSMessage.createJMSMessage(MQJMSMessage.java:607) 
        at com.ibm.msg.client.wmq.v6.jms.internal.MQMessageConsumer.isMessageSelected(MQMessageConsumer.java:3712) 
        at com.ibm.msg.client.wmq.v6.jms.internal.MQMessageConsumer.getMessage(MQMessageConsumer.java:2745) 
关于代码,我没有做任何不同的事情,下面是几个部分

        QueueReceiver qReceiver;
        Message message;

        message=qReceiver.receive(3000); //Having problem while calling over here

我认为队列上的消息不是MQRFH2消息

同时抛弃LinkedException是一个非常好的主意。i、 e

catch (JMSException e)
{
   System.err.println("getLinkedException()=" + e.getLinkedException());
   System.err.println(e.getLocalizedMessage());
   e.printStackTrace();
}

LinkedException将包含MQ原因代码。

您可以发布测试代码和完整异常吗?解析MCD文件夹时会引发Java NPE异常,该文件夹是正在使用的消息上RFH2头的一部分。我从堆栈跟踪中看到,您正在使用迁移/压缩(v6)模式连接到qmgr,但您使用的是什么版本的客户端?你能在显示RFH2头的队列上提供你的消息转储吗?罗杰被低估了。“也抛弃LinkedException并不是一个好主意”,这是强制性的。JMS为异常提供了一个多级数据结构,其中顶层是错误的通用JMS描述,链接异常是传输供应商对它的描述。无法打印链接的异常没有任何理由。在我工作过的大多数商店中,不打印链接异常的代码被认为存在Sev-1缺陷。为什么?因为如果没有它,几乎不可能确定问题,正如您在这里看到的基于响应的问题。此外,如果是服务器端问题,MQ问题是否总是会出现错误代码?