2011-01-25 5 views
2

바인딩 나는 JMS는 MDBJMS MQ는 문제

메시지 구동 EJB와 MQ 큐에 바인딩이 이상한 문제가 : CrbEventMessageAsynchronousService가 JMS 대상에 연결할 수 없습니다 : queue.contratto.crb.input.publicQueue. 오류 :

javax.jms.JMSException : MQJMS1017 수신하는 또는 브라우징 비 로컬 MQ 큐 잘못>

I는 QueueManager에 체크하고 MQ 큐가 로컬로 정의하고, 원격 같이하여 상기하지 예외.

답변

3

응용 프로그램이 열려고하는 맨 위에있는 큐가 로컬로 정의되어있을 수 있습니다. 그러나 WMQ가 해결할 대기열은 아닙니다. 예를 들어 원격 클러스터 된 큐를 통해 로컬 별칭을 정의하면 확인 된 큐는 로컬이 아닙니다. 또 다른 가능한 원인은 출력을 위해 열려고하는 대기열이 실제로 입력을 위해 열리고 있다는 것입니다. 이것은 실제로 매우 일반적입니다.

마지막으로 WMQ 클라이언트가 예상보다 다른 큐 관리자에 연결되는 것이 일반적입니다. 예를 들어, 연결은 QMGRA이고 큐 오브젝트는 QUEUE @ QMGRB와 같은 완전한 이름을 지정합니다. 큐가 QMGRB에 있고 JNDI 오브젝트가 해당 큐 관리자를 이름으로 지정하더라도, QMGRA의 연결은 송신 대기열로 연결되므로 비 로컬로 간주됩니다.

Dev에서 이런 종류의 오류를 제거하는 가장 좋은 방법 중 하나는 SupportPac MA0W을 사용하는 것입니다. 이 SupportPac은 API 이탈 또는 채널 이탈로 실행되며 모든 API 호출과 해당 호출에 대해 선택된 모든 옵션을 사람이 읽을 수있는 언어로 나열합니다. 이것은 어떤 객체 이름이 열렸는지, 무엇을 해결했는지, 그리고 사용 된 옵션을 정확하게 보여줄 것입니다.

또는 strmqtrc을 사용하여 추적을 켤 수 있습니다. 완료되면 endmqtrc으로 해제하는 것을 잊지 마세요! 이러한 추적은 QMgr 서버 및 추적 WMQ API 호출에서 활성화 및 비활성화됩니다. 클라이언트 측에서 실행하는 동등한 추적이 있지만 필요한 세부 수준이 표시되지 않을 수 있습니다.

마지막으로 JMS 예외와 연결된 모든 예외를 인쇄하는 것이 좋습니다. JMS 예외는 링크 된 예외가 공급자 특정 값을 보유하는 다중 레벨 데이터 구조입니다. 예를 들어 JMS 보안 예외가 WMQ 권한 부여 오류 일 수 있습니다. 그러나 다시 한번, 키 저장소 나 파일 시스템에 오류가있을 수 있습니다. 연결된 예외에 WMQ 2035 이유 코드가 표시되지 않으면 WMQ 보안 오류가 아닙니다. Infocenter는 Exceptions in WebSphere MQ classes for JMS 섹션에 링크 된 예외 데이터를 인쇄하는 방법을 설명합니다.

v7.0 WMQ 문서에 대한 링크를 제공했음을 유의하십시오. v6에서 코딩하는 경우 완전히 정확하지 않을 수 있으므로 대신 v6.0 Infocenter을보고 싶을 것입니다. WMQ의 v6.0은 2011 년 9 월까지 수명이 다되었으므로 v7.0의 모든 새로운 개발을 수행 할 것을 적극 권장합니다. v7.0 클라이언트가 필요하면 SupportPac MQC7으로 다운로드 할 수 있으며 v6.0 WMQ 서버와 역 호환됩니다.

+0

정말 고마워요. 문제는 "마지막으로 WMQ 클라이언트가 예상과 다른 큐 관리자에 연결되어있는 것이 일반적입니다."라는 제안이있었습니다. 사실 그것은 적용적인 문제였습니다. @ActivationConfigProperty (propertyName = "connectionFactoryJndiName", propertyValue = "cont0QCFinter") MDB 정의가 잘못된 큐 관리자를 가리키는 잘못된 연결 팩토리를 가리키고 있습니다. 친절합니다. 최대 –

+0

아, 그게 그것을 설명합니다. 아마 당신이 추측 할 수있는 것보다 더 많이 일어난다. 다행 이군. –