No puedo obtener javax.jms.ConnectionFactory
inyectado en mi cliente JMS independiente. Obtengo java.lang.NullPointerException
en connectionFactory.createConnection()
en el código siguiente.JavaEE 6: ¿Cómo inyectar el recurso JMS en un cliente JMS independiente?
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();
}
}
}
He creado la fábrica de conexiones correspondiente y en el recurso de destino abierto MQ (MoM) usando GlassFish 3.1 consola de administración.
¿Alguien podría ayudarme a entender lo que me estoy perdiendo?
'@ Resource' no funciona, pero buscar usando el nombre JNDI sí. \t 'Contexto jndiContext = new InitialContext(); \t \t ConnectionFactory connectionFactory = (ConnectionFactory) jndiContext.lookup ("jms/QueueConnectionFactory"); \t Queue destination = (Queue) jndiContext.lookup ("jms/ShippingRequestQueue"); ' – skip
Gracias, esto funcionó para mí. – Puckl