package com.oracle.example; import java.util.logging.Level; import java.util.logging.Logger; import javax.annotation.Resource; import javax.enterprise.context.RequestScoped; import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; import javax.inject.Named; import javax.jms.*; @Named(value = "jMSMessageProducerBean") @RequestScoped public class JMSMessageProducerBean { @Resource(mappedName = "jms/testQueue") private Queue myQueue; @Resource(mappedName = "jms/connectionFactory") private ConnectionFactory myQueueFactory; private String message; public JMSMessageProducerBean() { } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public void send() { FacesContext facesContext = FacesContext.getCurrentInstance(); try { sendJMSMessageToMyQueue(message); FacesMessage facesMessage = new FacesMessage("Message sent: " + message); facesMessage.setSeverity(FacesMessage.SEVERITY_INFO); facesContext.addMessage(null, facesMessage); } catch (JMSException jmse) { FacesMessage facesMessage = new FacesMessage("Message NOT sent: " + message); facesMessage.setSeverity(FacesMessage.SEVERITY_ERROR); facesContext.addMessage(null, facesMessage); } } private Message createJMSMessageForjmsMyQueue(Session session, Object messageData) throws JMSException { // TODO create and populate message to send TextMessage tm = session.createTextMessage(); tm.setText(messageData.toString()); return tm; } private void sendJMSMessageToMyQueue(Object messageData) throws JMSException { Connection connection = null; Session session = null; try { connection = myQueueFactory.createConnection(); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer messageProducer = session.createProducer(myQueue); messageProducer.send(createJMSMessageForjmsMyQueue(session, messageData)); } finally { if (session != null) { try { session.close(); } catch (JMSException e) { Logger.getLogger(this.getClass().getName()).log(Level.WARNING, "Cannot close session", e); } } if (connection != null) { connection.close(); } } } }