문제

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 메소드는 클래스 부울, 바이트, 짧고 정수, 길고, 플로트, 이중 및 문자열의 값을 허용합니다. 다른 클래스를 사용하려는 시도는 jmsexception을 던져야합니다.

따라서 받아들이지 않습니다 ByteArray. setObjectProperty 수락합니다 Object 따라서 컴파일 오류가 발생하지 않습니다.

다른 팁

WMQ 설치의 샘플 중 하나를 살펴 보는 것이 좋습니다.

이것은 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 오류 메시지처럼 보이지 않습니다. 메시지 객체를 포장하고 추가 점검을 수행하는지 궁금합니다.

중.

또한 육각 문자열을 사용하여 바이트 어레이로 변환 할 수 있습니다. com.ibm.msg.client.commonservices.Utils.hexToBytes(yourHexString)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top