001    /*
002    @license.text@
003     */
004    package biz.hammurapi.metrics.j2ee;
005    
006    import java.util.List;
007    
008    import javax.jms.JMSException;
009    import javax.jms.Message;
010    import javax.jms.Queue;
011    import javax.jms.QueueConnection;
012    import javax.jms.QueueConnectionFactory;
013    import javax.jms.QueueSender;
014    import javax.jms.QueueSession;
015    import javax.jms.Session;
016    import javax.naming.InitialContext;
017    
018    import biz.hammurapi.config.ConfigurationException;
019    import biz.hammurapi.xml.dom.AbstractDomObject;
020    
021    
022    
023    public class QueueSliceConsumer extends AbstractJmsSliceConsumer {
024            QueueConnection connection;
025            Queue queue;
026            
027            protected boolean processSlices(List slices) {
028                    try {
029                    QueueSession session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
030                    try {
031                            QueueSender sender = session.createSender(queue);
032                            try {
033                                    Message message = createMessage(session, slices);
034                                            sender.send(message);
035                                    } finally {
036                                    sender.close();
037                            }
038                    } finally {
039                            session.close();
040                    }
041                    } catch (Exception e) {
042                            return false;
043                    }
044            return true;
045            }
046    
047            public void stop() throws ConfigurationException {
048                    try {
049                            connection.close();
050                    } catch (JMSException e) {
051                            throw new ConfigurationException();
052                    }
053            }
054    
055            public void start() throws ConfigurationException {
056                    try {
057                            InitialContext jndiContext = createContext();
058                            QueueConnectionFactory connectionFactory = (QueueConnectionFactory) jndiContext.lookup(AbstractDomObject.getElementText(configElement, "connection-factory"));
059                            queue = (Queue) jndiContext.lookup(AbstractDomObject.getElementText(configElement, "queue"));
060                            String user = AbstractDomObject.getElementText(configElement, "user");
061                            if (user==null) {
062                                    connection = connectionFactory.createQueueConnection(); 
063                            } else {
064                                    connection = connectionFactory.createQueueConnection(user, AbstractDomObject.getElementText(configElement, "password"));
065                            }
066                            jndiContext.close();
067                    } catch (Exception e) {
068                            throw new ConfigurationException(e);
069                    }               
070            }
071            
072            public void setOwner(Object owner) {
073                    // Ignore               
074            }       
075    }