Não é possível definir o valor da propriedade para jms_ibm_mqmd_msgid em weblogic, jms, java

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

Pergunta

Quero enviar uma mensagem para uma fila JMS e quero definir uma propriedade de objeto:

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

Mas estou recebendo uma exceção para esta linha:

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

Por que não posso definir a matriz de bytes para esta propriedade? Eu vi algum exemplo, e todo mundo define bytearray, mas estou obtendo exceção:

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

Por quê? Obrigada!

Foi útil?

Solução

Por setObjectProperty:

O método setObjectProperty aceita valores de classe booleana, byte, curto, inteiro, longo, flutuante, duplo e string. Uma tentativa de usar qualquer outra classe deve lançar uma JMSexception.

Então não aceita ByteArray. setObjectProperty aceita Object Então você não recebe erro de compilação.

Outras dicas

Eu sugiro dar uma olhada em uma das amostras na instalação do WMQ - chamada Simplewmqmdwrite.java

Isso usa setObjectProperty da seguinte maneira:

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

A mensagem de erro que você incluiu, porém, não se parece muito com uma mensagem de erro WMQ JMS mais WebLogic, pergunto se isso envolveu o objeto da mensagem e está fazendo uma verificação adicional?

M.

Além disso, você pode transformar sua string hexade com.ibm.msg.client.commonservices.Utils.hexToBytes(yourHexString)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top