Java ee 6: injizieren Sie JMS-Ressource, die in einem eigenständigen JMS-client?

Ich kann nicht javax.jms.ConnectionFactory injiziert in meine standalone-JMS-client.
Ich bekomme eine java.lang.NullPointerException bei connectionFactory.createConnection() im code unten.

JmsClient.java

public class JmsClient {

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

    @Resource(mappedName="jms/ShippingRequestQueue")
    private static Destination destination;

    public static void main(String[] args) {        
        try {
            Connection connection = connectionFactory.createConnection();
            connection.start();

            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            MessageProducer producer = session.createProducer(destination);
            ObjectMessage message = session.createObjectMessage();

            ShippingRequestQueue shippingRequest = new ShippingRequestQueue(1, "107, Old Street");

            message.setObject(shippingRequest);
            producer.send(message);
            session.close();
            connection.close();

            System.out.println("Shipping request message sent ..");
        } catch (Throwable ex) {
            ex.printStackTrace();
        }        
    }

}

Erstellt habe ich die entsprechende Verbindung Fabrik-und Ziel-Ressource Öffnen MQ (MoM) mit Glassfish 3.1 Admin-Konsole.

Könnte jemand mir helfen zu verstehen, was ich bin fehlt?

  • @Resource funktioniert nicht, aber ein Blick über den JNDI-Namen ist. Context jndiContext = new InitialContext(); ConnectionFactory connectionFactory = (ConnectionFactory) jndiContext.lookup("jms/QueueConnectionFactory"); Queue destination = (Queue) jndiContext.lookup("jms/ShippingRequestQueue");
  • Vielen Dank, das funktionierte für mich.
InformationsquelleAutor skip | 2011-09-07
Schreibe einen Kommentar