Frage

Ich möchte eine Nachricht an eine JMS -Warteschlange senden, und ich möchte eine Objekteigenschaft festlegen:

tMessage.setObjectProperty("JMS_IBM_MQMD_MsgId", bytes); //bytes is a byte array value

Aber ich bekomme eine Ausnahme für diese Reihe:

tMessage.setObjectProperty("JMS_IBM_MQMD_MsgId", toByteArray((phone+"IBM").toCharArray()));

Warum kann ich nicht Byte -Array auf diese Eigenschaft einstellen? Ich habe einige Beispiele gesehen und jeder setzt Bytearray, aber ich bekomme eine Ausnahme:

weblogic.jms.common.MessageFormatException: [JMSClientExceptions:055123]Invalid property value, [B@48647dd0

Wieso den? Vielen Dank!

War es hilfreich?

Lösung

Zum setObjectProperty:

Die setObjectProperty -Methode akzeptiert Werte von booleschen Klassen, Byte, Short, Ganzzahl, Long, Float, Double und String. Ein Versuch, eine andere Klasse zu verwenden, muss eine jmsexception werfen.

Es akzeptiert also nicht ByteArray. setObjectProperty Akzeptiert Object Sie erhalten also keinen Kompilierfehler.

Andere Tipps

Ich würde vorschlagen, einen der Proben in der WMQ -Installation zu sehen - genannt SimpleWmqmdwrite.java

Dies verwendet setObjectProperty wie folgt:

  // Generate a custom message id
  byte[] customMessageId = new byte[24];
  for (int i = 0; i < 24; i++) {
    // Hex-string 010203040506070801020304050607080102030405060708
    customMessageId[i] = (byte) ((i % 8) + 1);
  }

  // Write to MQMD.MsgId via JMS_IBM_MQMD_MSGID message property
  message.setObjectProperty(WMQConstants.JMS_IBM_MQMD_MSGID, customMessageId);

Die Fehlermeldung, die Sie aufgenommen haben, sieht jedoch nicht ähnlich wie eine WMQ -JMS -Fehlermeldung aus.

M.

Sie können auch Ihre Hex -Zeichenfolge in Byte -Array verwendeten com.ibm.msg.client.commonservices.Utils.hexToBytes(yourHexString)

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