Inject jms resources
deibys Feb 19, 2013 10:12 AMHi guys,
In my jboss 7 server I have configured a jms queue like this
JMS Config: default | ||||
The overall JMS configuration. | ||||
Connection Factories | ||||
|
testQueue | queue/test |
In my JEE project I try to inject those resources in two points:
1) One in an EJB class and this works good
@Stateless(name = "DifundirEventoSession")
public class DifundirEventoSession implements IDifundirEvento {
@Inject
private Logger logger;
@Resource(mappedName = "java:/ConnectionFactory")
private ConnectionFactory connectionFactory;
@Resource(mappedName = "java:/queue/test")
private Queue queue;
...................................
private void difundir(EventoTO evento, EmailTO correoOrigen, List<EmailTO> to, String asunto, String mensaje,
TipoMensajeTO tipoMensaje, List<EmailAttachmentTO> adjuntos) throws EventoException {
logger.info("Iniciando difundir()...");
try {
Connection conn = connectionFactory.createConnection();
Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer messageProducer = session.createProducer(queue);
// messageProducer.setDeliveryMode(DeliveryMode.PERSISTENT);
// messageProducer.setTimeToLive(0);
// messageProducer.setPriority(arg0);
BulkEmailTO correoMasivo = new BulkEmailTO();
correoMasivo.setEvent(evento);
correoMasivo.setMessageType(tipoMensaje);
correoMasivo.setFrom(correoOrigen);
correoMasivo.setTo(to);
correoMasivo.setCc(null);
correoMasivo.setBcc(null);
correoMasivo.setSubject(asunto);
correoMasivo.setBody(mensaje);
correoMasivo.setAttachments(adjuntos);
// correoMasivo.setUsuario(usuario);
ObjectMessage msg = session.createObjectMessage(correoMasivo);
// msg.setJMSCorrelationID(arg0);
messageProducer.send(msg);
messageProducer.close();
session.close();
conn.close();
} catch (JMSException ex) {
// TODO Auto-generated catch block
logger.error("Ocurrió un error al depositar en la cola JMS el envío de correo electrónicos", ex);
throw new EventoException("Ocurrió un error al depositar en la cola JMS el envío de correo electrónicos",
ex);
}
logger.info("Finalizando difundir()...");
}
2) I try to inject it in a @ManagedBean but I get a NullPointerException when I try to access the resources . I get a NullPointerException in "Connection conn = connectionFactory.createConnection();" . Please note that in @Resource annotation I have tried mappedName attribute but the same.
@ManagedBean(name = "consultaEventoExternoBean")
@SessionScoped
public class ConsultaEventoExternoBean extends BaseBean implements Serializable {
@Resource(lookup = "java:/ConnectionFactory")
private ConnectionFactory connectionFactory;
@Resource(lookup = "java:/queue/test")
private Queue queue;
.................
private void notificarInscripcion() {
try {
logger.info("Realizar la notificacion al invitado de la inscripción al evento.");
Connection conn = connectionFactory.createConnection();
Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer messageProducer = session.createProducer(queue);
BulkEmailTO correoMasivo = new BulkEmailTO();
correoMasivo.setEvent(this.eventoTO);
correoMasivo.setMessageType(null);
correoMasivo.setFrom(UtilEvento.getEmailFrom(delegateEvento.getPropertie("mailNotificaEvento")));
List<EmailTO> listEmailTO = new ArrayList<EmailTO>();
EmailTO emailTOtmp = new EmailTO();
emailTOtmp.setName(this.contactoEventoTO.getNombreCompleto());
emailTOtmp.setEmail(this.contactoEventoTO.getEmail());
listEmailTO.add(emailTOtmp);
correoMasivo.setTo(listEmailTO);
correoMasivo.setCc(null);
correoMasivo.setBcc(null);
correoMasivo.setSubject("Inscribir Evento");
correoMasivo.setBody(UtilEvento.getBodyInscripcionEvento(eventoTO, new UsuarioTO()));
correoMasivo.setAttachments(null);
// correoMasivo.setUsuario(usuario);
ObjectMessage msg = session.createObjectMessage(correoMasivo);
messageProducer.send(msg);
messageProducer.close();
session.close();
conn.close();
} catch (JMSException ex) {
// TODO Auto-generated catch block
logger.error("Ocurrió un error al depositar en la cola JMS el envío de correo electrónicos", ex);
}
}
I am really clueless.....What is the issue ?