Frage

Haben sich mit diesem Problem für ein paar Stunden aufgeklebt jetzt jemand irgendwelche Ideen?

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

Am diesen Fehler, wenn ich die Nachricht setzte mit MQ native Bibliotheken und ich las sie JMS mit API. Die jms lesen kann werfen die Ausnahme oben. Ich verwende auch jms Selector, die das Problem verursacht zu sein scheint. mit aus dem Selektor funktioniert alles einwandfrei. TIA.

War es hilfreich?

Lösung

Schließlich ich in der Lage war, dieses Problem zu beheben, es ist alles mit, wie die Wähler zu tun hat geschaffen. Der Unterschied war, dass MQ-API Korrelations-ID als Byte-Array, wo es als JMS als String annimmt. Aus diesem Grunde war die Wahl nicht in der Lage, die Nachricht zu wählen und wurde den entsandte Fehler zu werfen. Der Fehler ist nicht bei allen Debug-freundlich daher eine Menge von Versuch und Irrtum zu tun hat. Sowieso jetzt funktioniert dies so bin ich froh. Unten ist die Codeänderung für dies zu tun, ich hatte:

// String-Selektor = "JMSCorrelationID = '" + corleationID + "'"; vor der Änderung

        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, Wähler);

der Code von IBM Docs bezeichnet wird.

Andere Tipps

Sie haben falsche Version von MQ-Bibliotheken bekommen. Versuchen Sie Ihren Code gegen die neuesten Versionen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top