Domanda

Voglio inviare un messaggio a una coda JMS e voglio impostare una proprietà dell'oggetto:

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

Ma sto ricevendo un'eccezione per questa riga:

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

Perché non posso impostare l'array di byte su questa proprietà? Ho visto qualche esempio e tutti danno Bytearray, ma ricevo un'eccezione:

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

Come mai? Grazie!

È stato utile?

Soluzione

Per setObjectProperty:

Il metodo SetObjectProperty accetta i valori di classe booleana, byte, corto, intero, lungo, galleggiante, doppio e stringa. Un tentativo di usare qualsiasi altra classe deve lanciare un JMSException.

Quindi non accetta ByteArray. setObjectProperty accetta Object Quindi non ricevi un errore di compilazione.

Altri suggerimenti

Suggerirei di dare un'occhiata a uno dei campioni nell'installazione WMQ - chiamata SimpleWMqmdWrite.java

Questo utilizza SetObjectProperty come segue:

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

Il messaggio di errore che hai incluso non assomiglia molto a un messaggio di errore JMS WMQ più Weblogic, mi chiedo se ciò abbia avvolto l'oggetto del messaggio e sta facendo qualche controllo aggiuntivo?

M.

Inoltre puoi trasformare la tua stringa esagonale in un array di byte usando com.ibm.msg.client.commonservices.Utils.hexToBytes(yourHexString)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top