質問

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:

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)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top