You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2010/09/28 11:00:51 UTC

svn commit: r1002058 - /james/server/trunk/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueue.java

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: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org