Невозможно установить значение свойства для JMS_IBM_MQMD_MsgId в weblogic, JMS, java

Я хочу отправить сообщение в очередь 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

Почему? Спасибо!


person victorio    schedule 07.11.2013    source источник
comment
Вы можете опубликовать исключение?   -  person user987339    schedule 07.11.2013
comment
@victorio не могли бы вы опубликовать пример кода, чтобы установить сообщение, у меня возникла проблема с установкой идентификатора сообщения, вот ссылка на мой вопрос stackoverflow.com/questions/52889361 /   -  person kushma gonna    schedule 29.10.2018


Ответы (3)


Для setObjectProperty:

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

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

person user987339    schedule 07.11.2013

Я бы посоветовал взглянуть на один из примеров в установке 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, интересно, обернуло ли оно объект сообщения и выполняет дополнительную проверку?

M.

person Calanais    schedule 11.11.2013

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

person Иван Труш    schedule 02.08.2019