0 Replies Latest reply on Feb 19, 2013 10:12 AM by deibys

    Inject jms resources

    deibys

      Hi guys,

       

      In my jboss 7 server I have configured a jms queue like this

      JMS Config: default

      The overall JMS configuration.

      Connection Factories

      InVmConnectionFactory

      java:/ConnectionFactory

      RemoteConnectionFactory

      RemoteConnectionFactory

      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 ?