无法在weblogic、JMS、java中设置JMS_IBM_MQMD_MsgId的属性值

无法在weblogic、JMS、java中设置JMS_IBM_MQMD_MsgId的属性值,java,jms,bytearray,object-properties,Java,Jms,Bytearray,Object Properties,我想向JMS队列发送消息,并设置对象属性: tMessage.setObjectProperty("JMS_IBM_MQMD_MsgId", bytes); //bytes is a byte array value 但这一行有一个例外: tMessage.setObjectProperty("JMS_IBM_MQMD_MsgId", toByteArray((phone+"IBM").toCharArray())); 为什么不能将字节数组设置为此属性?我看到了一些例子,每个人都用tearr

我想向JMS队列发送消息,并设置对象属性:

tMessage.setObjectProperty("JMS_IBM_MQMD_MsgId", bytes); //bytes is a byte array value
但这一行有一个例外:

tMessage.setObjectProperty("JMS_IBM_MQMD_MsgId", toByteArray((phone+"IBM").toCharArray()));
为什么不能将字节数组设置为此属性?我看到了一些例子,每个人都用tearray设置,但我有一个例外:

weblogic.jms.common.MessageFormatException: [JMSClientExceptions:055123]Invalid property value, [B@48647dd0
为什么??谢谢大家!

对于:

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);
//生成自定义消息id
字节[]customMessageId=新字节[24];
对于(int i=0;i<24;i++){
//六角管柱010203040506060708010203405060708010203405060708
customMessageId[i]=(字节)((i%8)+1);
}
//通过JMS_IBM_MQMD_MsgId消息属性写入MQMD.MsgId
message.setObjectProperty(WMQConstants.JMS_IBM_MQMD_MSGID,customMessageId);
虽然您包含的错误消息看起来不像WMQ JMS错误消息,但更像WebLogic,不知道这是否已经包装了消息对象并正在执行一些额外的检查


M.

您也可以使用
com.ibm.msg.client.commonservices.Utils.hexToBytes(您的hexToBytes)将您的十六进制字符串转换为字节数组。
您可以发布异常吗?@victorio您可以发布一些示例代码来设置我面临的消息id设置问题这里是我问题的链接