2012-01-18 2 views
4

J'essaie d'exécuter un tutoriel avec JMS et j'ai un problème. J'utilise la dernière version de Glassfish avec le dernier SDK JavaEE. Je crée une ressource ConnectionFactory dans la console d'administration Glassfish puis essayer de le instancier dans le code en utilisant l'appel suivant:JMS ConnectionFactory NullPointerException

@Resource(mappedName = "jms/ExampleConnectionFactory") 
private static ConnectionFactory connectionFactory; 

Mais je reçois le NullPointerException sur la ligne suivante:

Connection connection = connectionFactory.createConnection(); 

Comment puis-je résoudre ce problème? Merci d'avance.

+0

Où utilisez-vous la ressource? Si vous êtes dans un bean session, un bean géré par message ou un composant Web, ne déclarez pas la ressource statique: http://docs.oracle.com/javaee/6/tutorial/doc/bncgl.html#bncgm – perissf

+0

@perissf, j'ai enlevé le classificateur statique et cela n'a pas résolu le problème, connectionFactory est toujours null. – Egor

+0

Cela devrait fonctionner. Êtes-vous sûr d'utiliser les bonnes importations? Pouvez-vous poster plus d'infos/détails sur la configuration de ConnectioFactory dans GlassFish? – perissf

Répondre

0

Je rencontrais également ce problème lors de la tentative d'avoir un service Web RESTful placer un message sur une file d'attente JMS.

Pour moi, j'ai suivi ce tutoriel ici (http://www.tricoder.net/blog/?p=128), et j'avais besoin de placer une annotation @Stateless au dessus de mon code public class....

Pour une raison quelconque (je ne sais pas pourquoi, comme je suis totalement nouveau à cela) le @Stateless est requis pour que l'injection de dépendance fonctionne. (Il est dit que dans la source ci-dessus)

EDIT: Même avec cela, tout en développant mon application, j'aurais parfois le NullPointerException. Redémarrer Glassfish résout le problème quand cela arrive.

0

JMS consommateurs,

Essayez puting l'annotation @Stateless à votre classe et ajoutez javax.ejb.Stateless bibliothèque de package.

J'espère que vous trouverez cela utile.

0

Vous devez faire 2 choses:

  1. spécifier les propriétés InitialContext:

    Propriétés props = new Properties(); props.setProperty (Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.SerialInitContextFactory"); Contexte initialContext = new InitialContext (accessoires);

  2. Ajouter la bibliothèque à votre projet (ajuster chemin):

C:\installs\glassfish\glassfish-4.1\glassfish\lib\gf-client.jar

Questions connexes