Не удается установить значение свойства для JMS_IBM_MQMD_MSGID в Weblogic, JMS, Java

StackOverflow https://stackoverflow.com/questions/19835743

Вопрос

Я хочу отправить сообщение в очередь JMS, и я хочу установить свойство объекта:

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

Но я получаю исключение для этого ряда:

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

Почему я не могу установить массив байтов в это свойство? Я видел какой -то пример, и все устанавливают Bytearray, но я получаю исключение:

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

Почему? Благодарю вас!

Это было полезно?

Решение

За SetObjectProperty:

Метод SetObjectProperty принимает значения класса Boolean, Byte, Short, Integer, Long, Float, Double и String. Попытка использовать любой другой класс должен бросить JMSexception.

Так что это не принимает ByteArray. setObjectProperty принимает Object Так что вы не получаете ошибку компиляции.

Другие советы

Я бы посоветовал взглянуть на один из образцов в установке WMQ, который называется simplewmqmdwrite.java

Это использует SetObjectProperty следующим образом:

  // 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);

Сообщение об ошибке, которое вы включили, хотя не очень похоже на сообщение об ошибке WMQ JMS больше Weblogic, задаетесь вопросом, обер ли это объект сообщения и делает дополнительную проверку?

М.

Также вы можете преобразовать свою шестнадцатеричную строку в байтовый массив, используя com.ibm.msg.client.commonservices.Utils.hexToBytes(yourHexString)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top