diff options
Diffstat (limited to 'qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/ejb/QpidJMSResponderBean.java')
-rw-r--r-- | qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/ejb/QpidJMSResponderBean.java | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/ejb/QpidJMSResponderBean.java b/qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/ejb/QpidJMSResponderBean.java new file mode 100644 index 0000000000..74d6fb6d89 --- /dev/null +++ b/qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/ejb/QpidJMSResponderBean.java @@ -0,0 +1,100 @@ +package org.apache.qpid.jca.example.ejb; + +import java.util.Date; + +import javax.annotation.PostConstruct; +import javax.ejb.ActivationConfigProperty; +import javax.ejb.MessageDriven; +import javax.jms.Connection; +import javax.jms.ConnectionFactory; +import javax.jms.Message; +import javax.jms.MessageListener; +import javax.jms.MessageProducer; +import javax.jms.Session; +import javax.jms.TextMessage; +import javax.naming.InitialContext; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@MessageDriven(activationConfig = { + @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"), + @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), + @ActivationConfigProperty(propertyName = "destination", propertyValue = "@qpid.responder.queue.jndi.name@"), + @ActivationConfigProperty(propertyName = "connectionURL", propertyValue = "@broker.url@"), + @ActivationConfigProperty(propertyName = "maxSession", propertyValue = "10") +}) +public class QpidJMSResponderBean implements MessageListener +{ + + private static final Logger _log = LoggerFactory.getLogger(QpidJMSResponderBean.class); + + private ConnectionFactory _connectionFactory; + + @PostConstruct + public void init() + { + InitialContext context = null; + + try + { + context = new InitialContext(); + _connectionFactory = (ConnectionFactory)context.lookup("java:comp/env/QpidJMSXA"); + + } + catch(Exception e) + { + _log.error(e.getMessage(), e); + } + finally + { + QpidUtil.closeResources(context); + } + + } + + @Override + public void onMessage(Message message) + { + Connection connection = null; + Session session = null; + MessageProducer messageProducer = null; + TextMessage response = null; + + try + { + if(message instanceof TextMessage) + { + String content = ((TextMessage)message).getText(); + + _log.info("Received text message with contents: [" + content + "] at " + new Date()); + + StringBuffer temp = new StringBuffer(); + temp.append("QpidJMSResponderBean received message with content: [" + content); + temp.append("] at " + new Date()); + + if(message.getJMSReplyTo() != null) + { + connection = _connectionFactory.createConnection(); + session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); + messageProducer = session.createProducer(message.getJMSReplyTo()); + response = session.createTextMessage(); + response.setText(temp.toString()); + messageProducer.send(response); + } + else + { + _log.warn("Response was requested with no JMSReplyToDestination set. Will not respond to message."); + } + } + } + catch(Exception e) + { + _log.error(e.getMessage(), e); + } + finally + { + QpidUtil.closeResources(session, connection); + } + } +} |