Impossible de définir la valeur de la propriété pour JMS_IBM_MQMD_MSGID dans WebLogic, JMS, Java

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

Question

Je souhaite envoyer un message à une file d'attente JMS, et je souhaite définir une propriété d'objet:

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

Mais je reçois une exception pour cette ligne:

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

Pourquoi ne puis-je pas définir le tableau d'octets sur cette propriété? J'ai vu un exemple, et tout le monde définit Bytearray, mais je reçois l'exception:

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

Pourquoi? Merci!

Était-ce utile?

La solution

Pour setObjectProperty:

La méthode SetObjectProperty accepte les valeurs de la classe boolean, octet, court, entier, long, float, double et string. Une tentative d'utilisation de toute autre classe doit lancer une conception JMSException.

Donc ça n'accepte pas ByteArray. setObjectProperty accepter Object Vous n'obtenez donc pas d'erreur de compilation.

Autres conseils

Je suggérerais de jeter un œil à l'un des échantillons de l'installation de WMQ - appelée simplewmqmdwrite.java

Cela utilise SetObjectProperty comme suit:

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

Le message d'erreur que vous avez inclus ne ressemble pas beaucoup à un message d'erreur JMS WMQ plus WebLogic, vous demandez-vous si cela a enveloppé l'objet de message et fait une vérification supplémentaire?

M.

Vous pouvez également transformer votre chaîne hexagonale en tableau d'octets en utilisant com.ibm.msg.client.commonservices.Utils.hexToBytes(yourHexString)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top