2011-11-30 3 views
1

나는 이렇게 코딩 된 비동기 JMS 수신기 (명백한 세부 사항이 누락)가 : 메시지가 내가 도착하면된 javax.jms.JMSException : MQJMS2002은 : MQ 큐에서 메시지를 가져 오지 못했습니다

connection = connectionFactory.createConnection(); 
connection.setExceptionListener(new ExceptionListener() { 
    @Override 
    public void onException(JMSException ex) { 
     logger.info("JMS exception " + ex.getMessage()); 
    } 
}); 

session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); 
consumer = session.createConsumer(queue); 
consumer.setMessageListener(listener); 
logger.info("Waiting for a message"); 
connection.start(); 

모든 것이 잘 시작하지만, ExceptionListener에 의해 받아 들여지는 JMSException를 취득합니다. 예외는 다음과 같습니다 :

javax.jms.JMSException: MQJMS2002: failed to get message from MQ queue. 
at com.ibm.msg.client.wmq.v6.jms.internal.ConfigEnvironment.newException(ConfigEnvironment.java:374) 
at com.ibm.msg.client.wmq.v6.jms.internal.MQMessageConsumer.getMessage(MQMessageConsumer.java:3047) 
at com.ibm.msg.client.wmq.v6.jms.internal.MQMessageConsumer.receiveAsync(MQMessageConsumer.java:4042) 
at com.ibm.msg.client.wmq.v6.jms.internal.SessionAsyncHelper.run(SessionAsyncHelper.java:507) 
at java.lang.Thread.run(Thread.java:662) 

링크 된 예외는 단지 NullPointerException을 말하고 다른 세부 정보는 제공하지 않습니다.

나는 웹에서 대답을 찾고 있지만 나는 MQ 전문가가 아니며 아무 것도 가지고 있지 않다. 여기에있는 미들웨어 사용자는별로 도움이되지 않으며, 무엇이든하도록하는 것은 느리고 고통 스럽습니다. 나는 그것이 대기열 설정과 관련이 있다는 인상을 받았지만 나는 빨대에 쥐고 있다고 느낍니다. 사람이 어떤 제안을 가지고있는 경우

나는 감사하겠습니다 - 뭔가가 특히 내가 함께 자신을 팔 수 있고 내가 MQ 7.0.0.2 클라이언트 항아리를 사용하고

미들웨어를 :) 직면.

답변

1

당황스럽게도 필자는 앞에서 건너 뛴 '명백한'코드의 일부가 개봉 직후에 연결을 닫은 finally 블록이 있음을 발견했습니다. 오류 메시지가 너무 애매해야하는 이유를 모르겠다 - 연결이 닫혔다는 말은 나에게 머리를 긁적 거리는 시간을 절약 해 주었다.

내 문제를 읽는 데 시간을 들여 주셔서 감사합니다!

+0

널 포인터 예외는 오류 메시지에 대한 사용자의 질문에 대한 응답입니다. MQ API 호출에서 오류가 발생하면 연결된 예외에는 닫힌 연결에서 API 호출이 작동하지 않는다는 것을 나타내는 적절한 MQ 반환 코드가 포함됩니다. 예외가 API 호출에서 발생하지 않았거나 코드가 존재하지 않는 링크 된 예외를 참조했거나 링크 된 예외를 초기화하지 못한 MQ 코드의 버그가 있습니다. 마지막으로 (그리고 개발자가 * 항상 *! * :-)라고 생각하고 다시 만들면 PMR을 열 수 있습니다. 그렇지 않으면 연결된 예외에 올바르게 액세스하고 있는지 확인하십시오. –

0

This support link은 IBM 웹 사이트에서 귀하의 문제와 관련이있는 것으로 보입니다. 7보다는 버전 6 클래스를 언급하지만, 스택 추적은 행 번호를 제외하고는 충분히 유사합니다. 분명히 원인은 헤더 정보를 캡슐화하는 데 사용되는 XML에 나타나는 속성 일 것입니다.

사용하는 클라이언트 jars가 Websphere MQ 서버 인스턴스와 동일한 버전입니까? 미들웨어 담당자에게 7.0.1.0 이상으로 업그레이드하도록 설득하고 최신 수정 팩을 설치 한 다음 해당 버전에 적합한 클라이언트 항아리를 사용해야합니다. 7.0.1.0부터 헤더 분석을위한 수정이있었습니다.

1

예외와 함께 주어진 MQ 이유 코드가있을 수 있습니다. 정말 시간을 절약하는 데 도움이 될 수있었습니다.

+0

이유 코드 MQJMS2002가 아닌가? – DaveRlz

관련 문제