簡體   English   中英

無法在WebLogic,JMS,Java中為JMS_IBM_MQMD_MsgId設置屬性值

[英]Cannot set the property value for JMS_IBM_MQMD_MsgId in 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()));

為什么不能將字節數組設置為此屬性? 我看到了一些示例,每個人都設置了字節數組,但是卻出現異常:

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

為什么? 謝謝!

對於setObjectProperty

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

您所包含的錯誤消息雖然看起來更像是WMQ JMS錯誤消息,而不是WebLogic,但不知道這是否包裝了消息對象並正在執行其他檢查嗎?

M.

您也可以使用com.ibm.msg.client.commonservices.Utils.hexToBytes(yourHexString)將十六進制字符串轉換為字節數組

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM