2010-07-02 5 views
2

에서 NullPointerException이 발생합니다. 아래에 스택 추적을 첨부했습니다.새로운 MQConnectionFactory는() 나는 다음과 같은 명령을 실행하려고 보스

java.lang.NullPointerException 
    at com.ibm.msg.client.jms.internal.JmsFactoryFactoryImpl.getInstance(JmsFactoryFactoryImpl.java:169) 
    at com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl.setProviderFactory(JmsConnectionFactoryImpl.java:165) 
    at com.ibm.mq.jms.MQConnectionFactory.<init>(MQConnectionFactory.java:271) 
    at com.foundation.agent.plugin.JMSClient.createConnection(JMSClient.java:154) 
    at com.foundation.agent.plugin.JMSClient.launch(JMSClient.java:108) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 

나는 몇 가지 JBoss의 JMS 라이브러리 가능성이 원인이되는 것으로 의심 있도록 클래스 로더를 사용하여 new MQConectionFactory()를 호출하는 클래스를 로딩하고 있습니다.

상세 정보 :

  • com.ibm.mq.runtime_7.0.1.0의 \ lib에

항아리 :

  • com.ibm.mq.headers.jar
  • com.ibm.mqjms.jar
  • jms.jar
  • com.ibm.mq.jar
  • connector.jar
  • jta.jar
  • com.ibm.mq.jmqi.jar
  • dhbcore.jar
  • providerutil.jar
  • com.ibm .mq.pcf.jar
  • fscontext.jar

답변

1

당신은 WMQ의 v7.0.1.0을 사용하는 것으로 나타납니다. v7 WMQ Using Java manual에 설명 된대로 CLASSPATH를 구성 했습니까? 표준 설치로 가정하면, 런타임시 CLASSPATH에 필요한 유일한 jar는 com.ibm.mqjms.jar입니다. 목록에 표시되지 않는 표준 설치에는 10 개 정도의 jar 파일이 있으므로 CLASSPATH 변수에있는 항목이나 java/lib에있는 항목이 나열되어 있는지 확실하지 않지만 두 경우 모두 예상 할 수있는 목록은 아닙니다. jar 파일을 어딘가에서 가져온 경우 full client install

+0

XA 기능을 사용하지 않으려 고합니다. 리소스 어댑터를 사용하고 있는지 확신 할 수 없습니다. 왜냐하면 내가 정의하거나 배포하지 않고 EJB를 배포하지 않기 때문입니다. 기본적으로 연결 팩토리를 사용하여 연결을 빌드하는 jboss 내 스레드를 시작하고 있습니다 ... 내게는 보이지만 일부 jms 속성으로 인해 MQConnectionfactory가 그 자체로 인스턴스화하려고 시도하는 것으로 착각 할 수 있습니다. 내가 할 라이센스가없는 XA 트랜잭션 팩토리. 내가 말한 것은 내가 무엇을 어떻게 오버라이드 할 것인지 확신하지 못했다는 것입니다 ... –

+0

나는 IBM/WebSphere MQ/eclipse/plugins/com.ib.mq.runtime_7.0.1.0/내가 필요로하는 lib, jboss가 다른 것을 디폴트로 만드는 것을 포함해야하는 다른 jar 파일이 있는가? –

+0

WMQ Explorer에서 jar 파일을 가져 오는 것이 효과가 있거나 없을 수 있습니다. WMQ Explorer는 필요한 특정 기능을 번들로 제공하며 비공개 API 호출을 사용할 수 있습니다. 당신이 dev에 그런 식으로 일할 수 있다면, 그것을 위해 가십시오. 그러나 프로덕션을 위해서는 전체 WMQ 클라이언트를 내 응답에 링크 된 것으로 설치하십시오. 이것은 IBM이 지원하는 구성이며 설치를 테스트하는 데 사용할 수있는 추적, 진단 및 샘플 유틸리티와 같은 것을 포함합니다. 필 요할 필요는 없지만 지원 사건을 열면 IBM이 필요할 수 있습니다. –

1

169 행의 JmsFactoryFactoryImpl에 대한 코드를 디 컴파일하면 위의 몇 줄에 추적 출력이 있음을 알 수 있습니다. 당신이 가지고 같은 예외 내 시스템에서 시스템 ERR (내 경우에는 Tomcat의 catalina.out)에 추적 출력은 계시 folllowing :

 WorkQueueMananger Contents 
          -------------------------- 

| Maintain ThreadPool size  :- false 
| Maximum ThreadPool size  :- -1 
| ThreadPool inactive timeout :- 0 
| unavailable -    :- com.ibm.msg.client.commonservices.CSIException: JMSCS0002 

을 그리고 그 코드와 함께 당신은 갈 수에 : http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/index.jsp?topic=%2Fcom.ibm.mq.javadoc.doc%2FWMQJMSClasses%2Ferrorcodes.html

0

필요한 모든 JAR을 추가 한 후에도 동일한 문제가 발생했습니다. 마지막으로 JDK를 IBM JDK에서 Oracle/Sun JDK로 변경 한 후에 문제가 해결됩니다. IBM JDK (stand alone)가 연결 팩토리를 생성하는 데 필요한 충분한 요소가없는 것 같습니다.

+0

현재 사용중인 JDK를 어떻게 확인합니까? 필자는 Oracle/Sun JDK를 사용하고 있기 때문에 항상 다운로드하고 있습니다. 그러나 확인할 방법이 있습니까? – ADTC

관련 문제