Author: norman
Date: Tue Sep 28 09:00:51 2010
New Revision: 1002058

URL: http://svn.apache.org/viewvc?rev=1002058&view=rev
Log:
Explicit close MessageConsumer and MessageProducer

Modified:
    
james/server/trunk/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueue.java

Modified: 
james/server/trunk/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueue.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueue.java?rev=1002058&r1=1002057&r2=1002058&view=diff
==============================================================================
--- 
james/server/trunk/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueue.java
 (original)
+++ 
james/server/trunk/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueue.java
 Tue Sep 28 09:00:51 2010
@@ -74,7 +74,6 @@ public class ActiveMQMailQueue implement
     private final ConnectionFactory connectionFactory;
     private long messageTreshold = -1;
     private Log logger;
-
     private final static String JAMES_MAIL_RECIPIENTS = 
"JAMES_MAIL_RECIPIENTS";
     private final static String JAMES_MAIL_SENDER = "JAMES_MAIL_SENDER";
     private final static String JAMES_MAIL_ERROR_MESSAGE = 
"JAMES_MAIL_ERROR_MESSAGE";
@@ -128,15 +127,21 @@ public class ActiveMQMailQueue implement
     public void deQueue(DequeueOperation operation) throws MailQueueException, 
MessagingException {   
         Connection connection = null;
         Session session = null;
-        Message message;
+        Message message = null;
+        MessageConsumer consumer = null;
         try {
             connection = connectionFactory.createConnection();
             connection.start();
             
             session = connection.createSession(true, 
Session.SESSION_TRANSACTED);
             Queue queue = session.createQueue(queuename);
-            MessageConsumer consumer = session.createConsumer(queue);
+            consumer = session.createConsumer(queue);
             message = consumer.receive();
+            
+            if (message == null){
+               return;
+            }
+            
             Mail mail = createMail(message);
             operation.process(mail);
             session.commit();
@@ -153,6 +158,7 @@ public class ActiveMQMailQueue implement
         } catch (JMSException e) {
             throw new MailQueueException("Unable to dequeue next message", e);
         } catch (MessagingException e) {
+               
             if (session != null) {
                 try {
                     session.rollback();
@@ -161,6 +167,14 @@ public class ActiveMQMailQueue implement
                 }
             }
         } finally {
+               if (consumer != null) {
+                       
+                       try {
+                                       consumer.close();
+                               } catch (JMSException e1) {
+                    // ignore on rollback
+                               }
+               }
             try {
                 if (session != null) session.close();
             } catch (JMSException e) {
@@ -191,13 +205,15 @@ public class ActiveMQMailQueue implement
         
         Connection connection = null;
         Session session = null;
+        MessageProducer producer = null;
+        
         try {
 
             connection = connectionFactory.createConnection();
             connection.start();
             session = connection.createSession(false, 
Session.AUTO_ACKNOWLEDGE);
             Queue queue = session.createQueue(queuename);
-            MessageProducer producer = session.createProducer(queue);
+            producer = session.createProducer(queue);
 
             producer.send(createMessage(session, mail, mydelay));
         } catch (JMSException e) {
@@ -211,6 +227,11 @@ public class ActiveMQMailQueue implement
                 }
             }
         } finally {
+               try {
+                       if (producer != null) producer.close();
+               } catch (JMSException e) {
+                // ignore here
+               }
             try {
                 if (session != null) session.close();
             } catch (JMSException e) {
@@ -440,5 +461,4 @@ public class ActiveMQMailQueue implement
         }
         return value.toString();
     }
-    
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to