package wmqtest; import java.util.logging.Level; import java.util.logging.Logger; import javax.annotation.Resource; import javax.annotation.Resources; import javax.ejb.Stateless; import javax.ejb.TransactionAttribute; import javax.ejb.TransactionAttributeType; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageProducer; import javax.jms.Queue; import javax.jms.Session; import javax.jws.WebService; import javax.naming.InitialContext; import javax.naming.NamingException; /** * * @author witoldsz */ @Stateless @WebService public class Producer { @Resource(mappedName = "jms/IVTCF") private ConnectionFactory ivtcf; @Resource(mappedName = "jms/IVTQueue") private Queue ivtQueue; private final Logger logger = Logger.getLogger(Producer.class.getName()); @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) public void sendMessage(String message) { // ConnectionFactory ivtcf = null; // Queue ivtQueue = null; // try { // InitialContext ctx = new InitialContext(); // ivtcf = (ConnectionFactory) ctx.lookup("jms/IVTCF"); // ivtQueue = (Queue) ctx.lookup("jms/IVTQueue"); // } catch (NamingException ex) { // throw new RuntimeException(ex); // } logger.info("ivctf="+ivtcf); logger.info("ivtQueue="+ivtQueue); Connection conn = null; Session sess = null; MessageProducer producer = null; try { conn = ivtcf.createConnection(); sess = conn.createSession(true, Session.AUTO_ACKNOWLEDGE); Message textMessage = sess.createTextMessage(message); producer = sess.createProducer(ivtQueue); producer.send(textMessage); } catch (JMSException ex) { throw new RuntimeException(ex); } finally { close(producer); close(sess); close(conn); } } private void close(MessageProducer msgProducer) { if (msgProducer != null) { try { msgProducer.close(); } catch (JMSException ex) { Logger.getLogger(Producer.class.getName()).log(Level.SEVERE, null, ex); } } } private void close(Connection conn) { if (conn != null) { try { conn.close(); } catch (JMSException ex) { Logger.getLogger(Producer.class.getName()).log(Level.SEVERE, null, ex); } } } private void close(Session sess) { if (sess != null) { try { sess.close(); } catch (JMSException ex) { Logger.getLogger(Producer.class.getName()).log(Level.SEVERE, null, ex); } } } }