SetObjectPropertyメソッドは、クラスブール、バイト、ショート、整数、ロング、フロート、ダブル、ストリングの値を受け入れます。他のクラスを使用する試みは、JMSexcectionを投げる必要があります。
したがって、それは受け入れません ByteArray
.
setObjectProperty
受け入れます Object
したがって、エラーをコンパイルしません。
質問
JMSキューにメッセージを送信したいのですが、オブジェクトプロパティを設定したいのですが。
tMessage.setObjectProperty("JMS_IBM_MQMD_MsgId", bytes); //bytes is a byte array value
しかし、私はこの行の例外を取得しています:
tMessage.setObjectProperty("JMS_IBM_MQMD_MsgId", toByteArray((phone+"IBM").toCharArray()));
なぜこのプロパティにバイト配列を設定できないのですか?私はいくつかの例を見ました、そして、誰もがbytearrayを設定しますが、私は例外を得ています:
weblogic.jms.common.MessageFormatException: [JMSClientExceptions:055123]Invalid property value, [B@48647dd0
なんで?ありがとうございました!
解決
SetObjectPropertyメソッドは、クラスブール、バイト、ショート、整数、ロング、フロート、ダブル、ストリングの値を受け入れます。他のクラスを使用する試みは、JMSexcectionを投げる必要があります。
したがって、それは受け入れません ByteArray
.
setObjectProperty
受け入れます Object
したがって、エラーをコンパイルしません。
他のヒント
WMQインストールのサンプルの1つを見ることをお勧めします-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エラーメッセージのようには見えません。それがメッセージオブジェクトを巻き付けて追加のチェックを行っているのではないかと思いますか?
M.
また、ヘックス文字列を使用してバイト配列に変換することもできます com.ibm.msg.client.commonservices.Utils.hexToBytes(yourHexString)