2010-07-02 11 views
2

Je suis en train d'exécuter la commande suivante:nouvelle MQConnectionFactory() lance NullPointerException dans JBoss

MQConnectionFactory connFactory = new MQConnectionFactory(); 

je reçois une exception de pointeur nul que je ne peux pas sembler traquer. J'ai joint la trace de pile ci-dessous.

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) 

Je suis le chargement de la classe qui appelle la new MQConectionFactory() à l'aide d'un chargeur de classe, donc je pense que certains bibliothèque JMS JBoss est peut-être à l'origine de cette.

Plus d'infos:

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

Jars:

  • 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

Répondre

1

Vous semblez utiliser v7.0.1.0 de WMQ. Avez-vous configuré votre CLASSPATH comme décrit dans le v7 WMQ Using Java manual? En supposant une installation standard, le seul jar dont vous avez besoin dans CLASSPATH lors de l'exécution est com.ibm.mqjms.jar. Il y a environ 10 jars dans l'installation standard que je ne vois pas dans votre liste, donc je ne suis pas sûr si vous avez listé ce qui est dans votre variable CLASSPATH ou ce qui est dans java/lib mais ce n'est pas la liste. Si vous avez saisi les fichiers jar de quelque part, essayez d'utiliser le full client install

+0

Je n'essaie pas d'utiliser la fonctionnalité XA, je ne suis pas sûr que j'utilise un adaptateur de ressources parce que je ne suis pas la définition ou le déploiement et les EJB. Fondamentalement je commence un fil dans jboss qui établira la connexion en utilisant l'usine de connexion ... il me semble, et je pourrais me tromper, que certaines propriétés de jms provoquent le MQConnectionfactory pour essayer de s'instancier comme une usine de transaction XA dont je n'ai pas la licence à faire. cela étant dit, je ne sais pas quoi ou comment surpasser cela ... –

+0

J'ai seulement listé les fichiers jars que j'ai ajoutés depuis IBM/WebSphere MQ/eclipse/plugins/com.ib.mq.runtime_7.0.1.0/lib dont j'avais besoin, y a-t-il un autre jar que je devrais inclure qui pourrait faire en sorte que jboss prenne par défaut autre chose que ce que je veux? –

+0

L'extraction des fichiers JAR de l'installation de WMQ Explorer peut ou non fonctionner. WMQ Explorer regroupe les fonctionnalités spécifiques dont il a besoin et peut utiliser des appels d'API non publics. Si vous pouvez le faire fonctionner en dev, allez-y. Cependant, pour la production, j'installerais rien de moins que le client WMQ complet comme lié dans ma réponse. C'est la configuration qu'IBM prendra en charge et inclut des éléments tels que le traçage, les diagnostics et les exemples d'utilitaires que vous pouvez utiliser pour tester votre installation. Même si vous ne le souhaitez pas, IBM peut en avoir besoin si vous ouvrez un incident de support. –

1

Décompilation du code pour JmsFactoryFactoryImpl à la ligne 169, vous pouvez voir qu'il y a une sortie de trace quelques lignes ci-dessus. Sur mon système avec la même exception que vous aviez, la sortie de trace sur err du système (le catalina.out de Tomcat dans mon cas) a révélé la folllowing:

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

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

Et avec ce code, vous pouvez aller à: http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/index.jsp?topic=%2Fcom.ibm.mq.javadoc.doc%2FWMQJMSClasses%2Ferrorcodes.html

0

J'ai fait face au même problème même après avoir ajouté tous les fichiers JAR requis. Enfin, le problème est résolu après le passage de mon JDK d'IBM JDK à Oracle/Sun JDK. ressemble à IBM JDK (seul) n'a pas assez de choses pour créer une usine de connexion.

+0

Comment vérifiez-vous quel JDK vous utilisez actuellement? Je suis * assez sûr * J'utilise Oracle/Sun JDK puisque c'est ce que je télécharge toujours. Mais y a-t-il un moyen de vérifier? – ADTC