Question

Ont été coincé avec ce problème pendant quelques heures maintenant, quelqu'un des idées?

  

java.lang.NoSuchMethodError:. Com.ibm.mq.MQException (Ljava / lang / String; Ljava / lang / String; II) V    à com.ibm.msg.client.wmq.common.internal.Reason.createException (Reason.java:223)    à com.ibm.msg.client.wmq.internal.WMQMessageConsumer.checkJmqiCallSuccess (WMQMessageConsumer.java:123)    à com.ibm.msg.client.wmq.internal.WMQConsumerShadow.getMsg (WMQConsumerShadow.java:1198)    à com.ibm.msg.client.wmq.internal.WMQSyncConsumerShadow.receiveInternal (WMQSyncConsumerShadow.java:233)    à com.ibm.msg.client.wmq.internal.WMQConsumerShadow.receive (WMQConsumerShadow.java:922)    à com.ibm.msg.client.wmq.internal.WMQMessageConsumer.receive (WMQMessageConsumer.java:450)    à com.ibm.msg.client.jms.internal.JmsMessageConsumerImpl.receiveInboundMessage (JmsMessageConsumerImpl.java:742)    à com.ibm.msg.client.jms.internal.JmsMessageConsumerImpl.receive (JmsMessageConsumerImpl.java:423)    à com.ibm.mq.jms.MQMessageConsumer.receive (MQMessageConsumer.java:258)

reçois cette erreur quand je mets le message en utilisant les bibliothèques natives MQ et je les ai lus en utilisant l'API JMS de. Les jms lecture échoue jeter l'exception ci-dessus. J'utilise aussi jms sélecteur qui semble être la cause du problème. avec le tout sélecteur fonctionne très bien. TIA.

Était-ce utile?

La solution

Enfin j'ai pu résoudre ce problème, tout cela a à voir avec la façon dont le sélecteur est créé. La différence est que l'API de MQ ont id corrélation comme octets tableau où que JMS prend comme une chaîne. En raison de ce le sélecteur a été incapable de sélectionner le message et vomissait l'erreur affichée. L'erreur est pas du tout debug amicale avait donc faire beaucoup d'essais et d'erreurs. Quoi qu'il en soit maintenant cela fonctionne donc je suis heureux. Ci-dessous le changement de code que je devais faire pour cela:

  

// Chaîne sélecteur = "JMSCorrelationID = '" + corleationID + "'"; avant le changement

        StringBuffer fBuf = new StringBuffer("JMSCorrelationID = 'ID:");
        byte[] correlBytes = corleationID.getBytes();
        for(int i=0; i<24; i++) {
          if (i>=correlBytes.length) {
            fBuf.append("00");
          } else {
            byte b = correlBytes[i];
            String hexStr = Integer.toHexString(b);
            // -ve values produce 8 char results
            if (hexStr.length()>2) hexStr = hexStr.substring(hexStr.length()-2);
            // small values produce 1 char results
            if (hexStr.length()<2) fBuf.append("0");
            fBuf.append(hexStr);
          }
        }
        fBuf.append("'");
        String filter = fBuf.toString();
        System.out.println("creating receiver with filter: "+filter);
        QueueReceiver queueReceiver = queueSession.createReceiver(inQueue,filter);
  

// QueueReceiver QueueReceiver = queueSession.createReceiver (INQUEUE, sélecteur);

Référé le code de IBM docs.

Autres conseils

Vous avez eu une mauvaise version des bibliothèques MQ. Essayez d'exécuter votre code contre les nouvelles versions.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top