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 }