View Javadoc
1 /* 2 * @(#)QueueSenderImpl.java 3 * 4 * JFoxMQ the opensource JMS MOM. 5 * 6 * Corpyright 2002-2003 Huihoo Power, Inc. All Rights Reserved. This software 7 * is licensed under LGPL license. 8 * 9 * For more information, please visit: http://www.huihoo.org 10 */ 11 12 package org.huihoo.jfox.ms.jms.queue; 13 14 import javax.jms.DeliveryMode; 15 import javax.jms.JMSException; 16 import javax.jms.Message; 17 import javax.jms.Queue; 18 import javax.jms.QueueSender; 19 20 import org.huihoo.jfox.ms.jms.base.MessageProducerImpl; 21 import org.huihoo.jfox.ms.jms.message.MessageID; 22 23 /*** 24 * <p> 25 * This class implements the JMS queue sender. A client uses a QueueSender 26 * object to send messages to a queue. 27 * </p> 28 * 29 * <p> 30 * <b>Modifications:</b> 31 * <ul> 32 * <li>2003-05-20 - Original code completed. 33 * <li>2003-06-14 - implement createQueue(String queueName) implement 34 * send(Message message) implement send(Message message, int deliveryMode, int 35 * priority, long timeToLive) implement send(Queue queue, Message message) 36 * implement send(Queue queue, Message message, int deliveryMode, int priority, 37 * long timeToLive) 38 * 39 * </ul> 40 * </p> 41 * 42 * @author <a href="mailto:founder_chen@yahoo.com.cn">Yong.Cheng</a> 43 * @version 0.1.1 2003-06-14 20:59:05 44 * @since 0.1 2003-05-20 21:37:30 45 */ 46 47 public class QueueSenderImpl 48 extends MessageProducerImpl 49 implements QueueSender { 50 51 private Queue queue; 52 53 /*** 54 * @param queueSession 55 * @param queue 56 */ 57 public QueueSenderImpl(QueueSessionImpl queueSession, Queue queue) { 58 super(queueSession); 59 this.queue = queue; 60 } 61 62 /*** 63 * Retrieve a reference of queue destionation. 64 * 65 * @return Queue 66 * @throws JMSException 67 */ 68 public Queue getQueue() throws JMSException { 69 if (isClosed()) { 70 throw new javax.jms.IllegalStateException( 71 "The queue sender is closed."); 72 } 73 return queue; 74 } 75 76 /*** 77 * Send message to server. 78 * 79 * @param message 80 * @throws JMSException 81 */ 82 public void send(Message message) throws JMSException { 83 if (isClosed()) { 84 throw new javax.jms.IllegalStateException( 85 "The queue sender is closed."); 86 } 87 send( 88 queue, 89 message, 90 defaultDeliveryMode, 91 defaultPriority, 92 defaultTimeToLive); 93 } 94 95 /*** 96 * Send message to server. 97 * 98 * @param message 99 * @param deliveryMode 100 * @param priority 101 * @param timeToLive 102 * @throws JMSException 103 */ 104 public void send( 105 Message message, 106 int deliveryMode, 107 int priority, 108 long timeToLive) 109 throws JMSException { 110 if (isClosed()) { 111 throw new javax.jms.IllegalStateException( 112 "The queue sender is closed."); 113 } 114 send(queue, message, deliveryMode, priority, timeToLive); 115 } 116 117 /*** 118 * Send message to server. 119 * 120 * @param queue 121 * @param message 122 * @throws JMSException 123 */ 124 public void send(Queue queue, Message message) throws JMSException { 125 if (isClosed()) { 126 throw new javax.jms.IllegalStateException( 127 "The queue sender is closed."); 128 } 129 send( 130 queue, 131 message, 132 defaultDeliveryMode, 133 defaultPriority, 134 defaultTimeToLive); 135 } 136 137 /*** 138 * Send mesage to server. 139 * 140 * @param queue 141 * @param message 142 * @param deliveryMode 143 * @param priority 144 * @param timeToLive 145 * @throws JMSException 146 */ 147 public void send( 148 Queue queue, 149 Message message, 150 int deliveryMode, 151 int priority, 152 long timeToLive) 153 throws JMSException { 154 if (isClosed()) { 155 throw new javax.jms.IllegalStateException( 156 "The queue sender is closed."); 157 } 158 159 if (queue == null) { 160 throw new JMSException("Queue is null."); 161 } 162 163 if (message == null) { 164 throw new JMSException("Cannot send null message."); 165 } 166 167 if (queue instanceof TemporaryQueueImpl) { 168 message.setJMSDeliveryMode(DeliveryMode.NON_PERSISTENT); 169 } else { 170 message.setJMSDeliveryMode(deliveryMode); 171 } 172 173 message.setJMSDestination(queue); 174 message.setJMSDeliveryMode(deliveryMode); 175 message.setJMSPriority(priority); 176 177 if (disableMessageID) { 178 message.setJMSMessageID(null); 179 } else { 180 MessageID messageID = new MessageID(message.getJMSDeliveryMode()); 181 message.setJMSMessageID(messageID.getMessageID()); 182 } 183 184 if (disableMessageTimestamp) { 185 message.setJMSExpiration(0); 186 message.setJMSTimestamp(0); 187 } else { 188 message.setJMSTimestamp(System.currentTimeMillis()); 189 if (timeToLive == 0) { 190 message.setJMSExpiration(0); 191 } else { 192 message.setJMSExpiration( 193 System.currentTimeMillis() + timeToLive); 194 } 195 } 196 super.sendMessage(message); 197 } 198 199 /*** 200 * Closes the queue sender. 201 * 202 * <p> 203 * Since a provider may allocate some resources on behalf of a 204 * MessageProducer outside the Java virtual machine, clients should close 205 * them when they are not needed. Relying on garbage collection to 206 * eventually reclaim these resources may not be timely enough. 207 */ 208 public void close() throws JMSException { 209 super.close(); 210 } 211 }

This page was automatically generated by Maven