package com.googlecode.mycontainer.jms; import javax.annotation.Resource; import javax.ejb.Stateless; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.JMSException; import javax.jms.MessageConsumer; import javax.jms.MessageProducer; import javax.jms.Queue; import javax.jms.QueueConnectionFactory; import javax.jms.Session; import javax.jms.TemporaryQueue; import javax.jms.TextMessage; import javax.jms.Topic; @Stateless public class TesterServiceBean implements TesterService { private static final org.slf4j.Logger LOG = org.slf4j.LoggerFactory.getLogger(TesterServiceBean.class); @Resource private ConnectionFactory connectionFactory; @Resource(mappedName = "queue/queueRaoni") private Queue queue; @Resource(mappedName = "topic/topicRaoni") private Topic topic; public void sendMsg(String msg) { Connection connection = null; Session session = null; try { connection = connectionFactory.createConnection(); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer sender = session.createProducer(queue); TemporaryQueue tempQueue = session.createTemporaryQueue(); TextMessage txtMessage = session.createTextMessage(msg); txtMessage.setJMSReplyTo(tempQueue); MessageConsumer consumer = session.createConsumer(tempQueue); sender.send(txtMessage); connection.start(); consumer.receive(); } catch (JMSException e) { throw new RuntimeException(e); } finally { close(session); close(connection); } } public void sendMsgToTopic(String msg) { Connection connection = null; Session session = null; try { connection = ((QueueConnectionFactory) connectionFactory) .createQueueConnection(); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer sender = session.createProducer(topic); TemporaryQueue tempQueue = session.createTemporaryQueue(); TextMessage txtMessage = session.createTextMessage(msg); txtMessage.setJMSReplyTo(tempQueue); MessageConsumer consumer = session.createConsumer(tempQueue); sender.send(txtMessage); connection.start(); consumer.receive(); } catch (JMSException e) { throw new RuntimeException(e); } finally { close(session); close(connection); } } private void close(Connection conn) { try { if (conn != null) { conn.close(); } } catch (JMSException e) { LOG.error("Error closing jms connection", e); } } private void close(Session session) { try { if (session != null) { session.close(); } } catch (JMSException e) { LOG.error("Error closing jms session", e); } } }