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 bt...@apache.org on 2018/02/08 09:05:22 UTC

[1/6] james-project git commit: JAMES-2331 Remove trial to rollback a non transacted session

Repository: james-project
Updated Branches:
  refs/heads/master 23b0c18d1 -> 965f1ecf1


JAMES-2331 Remove trial to rollback a non transacted session


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/16d71043
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/16d71043
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/16d71043

Branch: refs/heads/master
Commit: 16d710438c49f54e10b5447914c5aabcf1f6c5d7
Parents: 23b0c18
Author: benwa <bt...@linagora.com>
Authored: Mon Feb 5 09:14:00 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Mon Feb 5 09:14:00 2018 +0700

----------------------------------------------------------------------
 .../src/main/java/org/apache/james/queue/jms/JMSMailQueue.java      | 1 -
 1 file changed, 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/16d71043/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
index a0509f3..01f23d5 100644
--- a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
+++ b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
@@ -232,7 +232,6 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
             enqueuedMailsMetric.increment();
             mailQueueSize.increment();
         } catch (Exception e) {
-            rollback(session);
             throw new MailQueueException("Unable to enqueue mail " + mail, e);
         } finally {
             timeMetric.stopAndPublish();


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[2/6] james-project git commit: JAMES-2332 Slightly improve JMSMailQueue :: getSize

Posted by bt...@apache.org.
JAMES-2332 Slightly improve JMSMailQueue :: getSize


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/67d6b677
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/67d6b677
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/67d6b677

Branch: refs/heads/master
Commit: 67d6b6779f7fa4ae70e96ce30c21c8f53500571e
Parents: b8229df
Author: benwa <bt...@linagora.com>
Authored: Tue Feb 6 10:37:18 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Tue Feb 6 10:38:15 2018 +0700

----------------------------------------------------------------------
 .../java/org/apache/james/queue/jms/JMSMailQueue.java | 14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/67d6b677/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
index c6d17d8..dd545a6 100644
--- a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
+++ b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
@@ -50,6 +50,7 @@ import javax.mail.MessagingException;
 import javax.mail.internet.AddressException;
 import javax.mail.internet.MimeMessage;
 
+import org.apache.commons.collections.iterators.EnumerationIterator;
 import org.apache.james.core.MailAddress;
 import org.apache.james.lifecycle.api.Disposable;
 import org.apache.james.metrics.api.Metric;
@@ -67,6 +68,7 @@ import org.slf4j.LoggerFactory;
 import org.threeten.extra.Temporals;
 
 import com.google.common.base.Throwables;
+import com.google.common.collect.Iterators;
 
 /**
  * <p>
@@ -481,21 +483,13 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
         return JAMES_NEXT_DELIVERY + " <= " + System.currentTimeMillis() + " OR " + FORCE_DELIVERY + " = true";
     }
 
-    @SuppressWarnings("unchecked")
     @Override
     public long getSize() throws MailQueueException {
         QueueBrowser browser = null;
-        int size = 0;
         try {
             browser = session.createBrowser(queue);
-
-            Enumeration<Message> messages = browser.getEnumeration();
-
-            while (messages.hasMoreElements()) {
-                messages.nextElement();
-                size++;
-            }
-            return size;
+            Enumeration enumeration = browser.getEnumeration();
+            return Iterators.size(new EnumerationIterator(enumeration));
         } catch (Exception e) {
             LOGGER.error("Unable to get size of queue {}", queueName, e);
             throw new MailQueueException("Unable to get size of queue " + queueName, e);


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[6/6] james-project git commit: JAMES-2236 Upgrade Camel from 2.19.1 to 2.19.4

Posted by bt...@apache.org.
JAMES-2236 Upgrade Camel from 2.19.1 to 2.19.4

The releases contains dozens of bug fixes and stability improvements.

See https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12341575&projectId=12311211

Contributed by https://github.com/lmilev


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/965f1ecf
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/965f1ecf
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/965f1ecf

Branch: refs/heads/master
Commit: 965f1ecf1ec704b9dfe45c563dd4886ccf80d1ef
Parents: 919d48d
Author: Lyuben Milev <ly...@gmail.com>
Authored: Tue Jan 30 16:20:27 2018 +0200
Committer: benwa <bt...@linagora.com>
Committed: Thu Feb 8 16:03:56 2018 +0700

----------------------------------------------------------------------
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/965f1ecf/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index b3ec971..4882d08 100644
--- a/pom.xml
+++ b/pom.xml
@@ -580,7 +580,7 @@
 
         <activemq.version>5.15.2</activemq.version>
         <apache-mime4j.version>0.8.1</apache-mime4j.version>
-        <camel.version>2.19.1</camel.version>
+        <camel.version>2.19.4</camel.version>
         <derby.version>10.9.1.0</derby.version>
         <hadoop.version>1.1.1</hadoop.version>
         <hbase.version>0.94.27</hbase.version>


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[5/6] james-project git commit: JAMES-2332 Minor cosmetic fixes

Posted by bt...@apache.org.
JAMES-2332 Minor cosmetic fixes


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/919d48da
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/919d48da
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/919d48da

Branch: refs/heads/master
Commit: 919d48dacfb95e63de2d4c0fd3886784a07c7c5d
Parents: ffe3467
Author: benwa <bt...@linagora.com>
Authored: Tue Feb 6 10:55:56 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Feb 8 10:14:51 2018 +0700

----------------------------------------------------------------------
 .../java/org/apache/james/queue/jms/JMSMailQueue.java   | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/919d48da/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
index 81f4e38..19a4fe4 100644
--- a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
+++ b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
@@ -190,7 +190,6 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
     @Override
     public MailQueueItem deQueue() throws MailQueueException {
         Session session = null;
-        Message message;
         MessageConsumer consumer = null;
 
         while (true) {
@@ -200,7 +199,7 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
                 Queue queue = session.createQueue(queueName);
                 consumer = session.createConsumer(queue, getMessageSelector());
 
-                message = consumer.receive(10000);
+                Message message = consumer.receive(10000);
 
                 if (message != null) {
                     mailQueueSize.decrement();
@@ -220,7 +219,6 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
                 timeMetric.stopAndPublish();
             }
         }
-
     }
 
     @Override
@@ -474,7 +472,7 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
      * @throws MessagingException
      */
     protected MailQueueItem createMailQueueItem(Session session, MessageConsumer consumer, Message message) throws JMSException, MessagingException {
-        final Mail mail = createMail(message);
+        Mail mail = createMail(message);
         JMSMailQueueItem jmsMailQueueItem = new JMSMailQueueItem(mail, session, consumer);
         return mailQueueItemDecoratorFactory.decorate(jmsMailQueueItem);
     }
@@ -488,7 +486,7 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
         QueueBrowser browser = null;
         try {
             browser = session.createBrowser(queue);
-            Enumeration enumeration = browser.getEnumeration();
+            Enumeration<?> enumeration = browser.getEnumeration();
             return Iterators.size(new EnumerationIterator(enumeration));
         } catch (Exception e) {
             LOGGER.error("Unable to get size of queue {}", queueName, e);
@@ -641,8 +639,8 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
         try {
             browser = session.createBrowser(queue);
 
-            final Enumeration<Message> messages = browser.getEnumeration();
-            final QueueBrowser myBrowser = browser;
+            Enumeration<Message> messages = browser.getEnumeration();
+            QueueBrowser myBrowser = browser;
 
             return new MailQueueIterator() {
 


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[4/6] james-project git commit: JAMES-2332 Connection is not required in JMS mail queue items

Posted by bt...@apache.org.
JAMES-2332 Connection is not required in JMS mail queue items


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/ffe34674
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/ffe34674
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/ffe34674

Branch: refs/heads/master
Commit: ffe3467456b808186e43392a90c39196974d4c70
Parents: 67d6b67
Author: benwa <bt...@linagora.com>
Authored: Tue Feb 6 10:44:15 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Tue Feb 6 10:44:15 2018 +0700

----------------------------------------------------------------------
 .../org/apache/james/queue/activemq/ActiveMQMailQueue.java     | 5 ++---
 .../org/apache/james/queue/activemq/ActiveMQMailQueueItem.java | 5 ++---
 .../src/main/java/org/apache/james/queue/jms/JMSMailQueue.java | 6 +++---
 .../main/java/org/apache/james/queue/jms/JMSMailQueueItem.java | 5 +----
 4 files changed, 8 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/ffe34674/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueue.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueue.java b/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueue.java
index e968196..7a887c1 100644
--- a/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueue.java
+++ b/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueue.java
@@ -23,7 +23,6 @@ import java.net.MalformedURLException;
 import java.util.List;
 import java.util.Map;
 
-import javax.jms.Connection;
 import javax.jms.ConnectionFactory;
 import javax.jms.JMSException;
 import javax.jms.MapMessage;
@@ -217,9 +216,9 @@ public class ActiveMQMailQueue extends JMSMailQueue implements ActiveMQSupport {
     }
 
     @Override
-    protected MailQueueItem createMailQueueItem(Connection connection, Session session, MessageConsumer consumer, Message message) throws JMSException, MessagingException {
+    protected MailQueueItem createMailQueueItem(Session session, MessageConsumer consumer, Message message) throws JMSException, MessagingException {
         Mail mail = createMail(message);
-        ActiveMQMailQueueItem activeMQMailQueueItem = new ActiveMQMailQueueItem(mail, connection, session, consumer, message);
+        ActiveMQMailQueueItem activeMQMailQueueItem = new ActiveMQMailQueueItem(mail, session, consumer, message);
         return mailQueueItemDecoratorFactory.decorate(activeMQMailQueueItem);
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/ffe34674/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueueItem.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueueItem.java b/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueueItem.java
index 4cb1f90..cb8f5ce 100644
--- a/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueueItem.java
+++ b/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueueItem.java
@@ -21,7 +21,6 @@ package org.apache.james.queue.activemq;
 
 import java.io.IOException;
 
-import javax.jms.Connection;
 import javax.jms.JMSException;
 import javax.jms.Message;
 import javax.jms.MessageConsumer;
@@ -44,8 +43,8 @@ public class ActiveMQMailQueueItem extends JMSMailQueueItem implements ActiveMQS
 
     private final Message message;
 
-    public ActiveMQMailQueueItem(Mail mail, Connection connection, Session session, MessageConsumer consumer, Message message) {
-        super(mail, connection, session, consumer);
+    public ActiveMQMailQueueItem(Mail mail, Session session, MessageConsumer consumer, Message message) {
+        super(mail,  session, consumer);
         this.message = message;
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/ffe34674/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
index dd545a6..81f4e38 100644
--- a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
+++ b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
@@ -204,7 +204,7 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
 
                 if (message != null) {
                     mailQueueSize.decrement();
-                    return createMailQueueItem(connection, session, consumer, message);
+                    return createMailQueueItem(session, consumer, message);
                 } else {
                     session.commit();
                     closeConsumer(consumer);
@@ -473,9 +473,9 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
      * @throws JMSException
      * @throws MessagingException
      */
-    protected MailQueueItem createMailQueueItem(Connection connection, Session session, MessageConsumer consumer, Message message) throws JMSException, MessagingException {
+    protected MailQueueItem createMailQueueItem(Session session, MessageConsumer consumer, Message message) throws JMSException, MessagingException {
         final Mail mail = createMail(message);
-        JMSMailQueueItem jmsMailQueueItem = new JMSMailQueueItem(mail, connection, session, consumer);
+        JMSMailQueueItem jmsMailQueueItem = new JMSMailQueueItem(mail, session, consumer);
         return mailQueueItemDecoratorFactory.decorate(jmsMailQueueItem);
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/ffe34674/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueueItem.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueueItem.java b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueueItem.java
index 5f195bd..ad10836 100644
--- a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueueItem.java
+++ b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueueItem.java
@@ -19,7 +19,6 @@
 
 package org.apache.james.queue.jms;
 
-import javax.jms.Connection;
 import javax.jms.JMSException;
 import javax.jms.MessageConsumer;
 import javax.jms.Session;
@@ -34,13 +33,11 @@ import org.apache.mailet.Mail;
 public class JMSMailQueueItem implements MailQueueItem {
 
     protected final Mail mail;
-    protected final Connection connection;
     protected final Session session;
     protected final MessageConsumer consumer;
 
-    public JMSMailQueueItem(Mail mail, Connection connection, Session session, MessageConsumer consumer) {
+    public JMSMailQueueItem(Mail mail, Session session, MessageConsumer consumer) {
         this.mail = mail;
-        this.connection = connection;
         this.session = session;
         this.consumer = consumer;
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[3/6] james-project git commit: JAMES-2332 Re-use non-transacted sessions in JMSMailQueue and its sub-classes.

Posted by bt...@apache.org.
JAMES-2332 Re-use non-transacted sessions in JMSMailQueue and its sub-classes.


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/b8229df3
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/b8229df3
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/b8229df3

Branch: refs/heads/master
Commit: b8229df3b09c4ca59aa23a8f2a3f65c20e4ab1f4
Parents: 16d7104
Author: benwa <bt...@linagora.com>
Authored: Tue Feb 6 10:32:26 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Tue Feb 6 10:38:15 2018 +0700

----------------------------------------------------------------------
 .../james/queue/activemq/ActiveMQMailQueue.java | 22 +-----
 .../apache/james/queue/jms/JMSMailQueue.java    | 83 +++++++++-----------
 2 files changed, 39 insertions(+), 66 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/b8229df3/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueue.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueue.java b/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueue.java
index 142b77b..e968196 100644
--- a/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueue.java
+++ b/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueue.java
@@ -141,8 +141,8 @@ public class ActiveMQMailQueue extends JMSMailQueue implements ActiveMQSupport {
     /**
      * Produce the mail to the JMS Queue
      */
-    protected void produceMail(Session session, Map<String, Object> props, int msgPrio, Mail mail) throws JMSException, MessagingException, IOException {
-        MessageProducer producer = null;
+    @Override
+    protected void produceMail(Map<String, Object> props, int msgPrio, Mail mail) throws JMSException, MessagingException, IOException {
         BlobMessage blobMessage = null;
         boolean reuse = false;
 
@@ -189,28 +189,20 @@ public class ActiveMQMailQueue extends JMSMailQueue implements ActiveMQSupport {
                 // store the queue name in the props
                 props.put(JAMES_QUEUE_NAME, queueName);
 
-                Queue queue = session.createQueue(queueName);
-
-                producer = session.createProducer(queue);
                 for (Map.Entry<String, Object> entry : props.entrySet()) {
                     blobMessage.setObjectProperty(entry.getKey(), entry.getValue());
                 }
                 producer.send(blobMessage, Message.DEFAULT_DELIVERY_MODE, msgPrio, Message.DEFAULT_TIME_TO_LIVE);
-                    
-              
 
             } else {
-                super.produceMail(session, props, msgPrio, mail);
+                super.produceMail(props, msgPrio, mail);
             }
         } catch (JMSException e) {
             if (!reuse && blobMessage != null && blobMessage instanceof ActiveMQBlobMessage) {
                 ((ActiveMQBlobMessage) blobMessage).deleteFile();
             }
             throw e;
-        } finally {
-            closeProducer(producer);
         }
-
     }
 
     /**
@@ -272,15 +264,11 @@ public class ActiveMQMailQueue extends JMSMailQueue implements ActiveMQSupport {
      */
     @Override
     public long getSize() throws MailQueueException {
-
-        Session session = null;
         MessageConsumer consumer = null;
         MessageProducer producer = null;
         TemporaryQueue replyTo = null;
-        long size;
 
         try {
-            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
             replyTo = session.createTemporaryQueue();
             consumer = session.createConsumer(replyTo);
 
@@ -296,8 +284,7 @@ public class ActiveMQMailQueue extends JMSMailQueue implements ActiveMQSupport {
             MapMessage reply = (MapMessage) consumer.receive(2000);
             if (reply != null && reply.itemExists("size")) {
                 try {
-                    size = reply.getLong("size");
-                    return size;
+                    return reply.getLong("size");
                 } catch (NumberFormatException e) {
                     return super.getSize();
                 }
@@ -321,7 +308,6 @@ public class ActiveMQMailQueue extends JMSMailQueue implements ActiveMQSupport {
                     LOGGER.error("Error while deleting temporary queue", e);
                 }
             }
-            closeSession(session);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/b8229df3/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
index 01f23d5..c6d17d8 100644
--- a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
+++ b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
@@ -133,13 +133,18 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
 
     private static final Logger LOGGER = LoggerFactory.getLogger(JMSMailQueue.class);
 
+    public static final String FORCE_DELIVERY = "FORCE_DELIVERY";
+
     protected final String queueName;
     protected final Connection connection;
     protected final MailQueueItemDecoratorFactory mailQueueItemDecoratorFactory;
     protected final Metric enqueuedMailsMetric;
     protected final Metric mailQueueSize;
     protected final MetricFactory metricFactory;
-    public static final String FORCE_DELIVERY = "FORCE_DELIVERY";
+
+    protected final Session session;
+    protected final Queue queue;
+    protected final MessageProducer producer;
 
     public JMSMailQueue(ConnectionFactory connectionFactory, MailQueueItemDecoratorFactory mailQueueItemDecoratorFactory, String queueName, MetricFactory metricFactory) {
         try {
@@ -153,6 +158,14 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
         this.metricFactory = metricFactory;
         this.enqueuedMailsMetric = metricFactory.generate("enqueuedMail:" + queueName);
         this.mailQueueSize = metricFactory.generate("mailQueueSize:" + queueName);
+
+        try {
+            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+            queue = session.createQueue(queueName);
+            producer = session.createProducer(queue);
+        } catch (JMSException e) {
+            throw Throwables.propagate(e);
+        }
     }
 
     @Override
@@ -211,14 +224,11 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
     @Override
     public void enQueue(Mail mail, long delay, TimeUnit unit) throws MailQueueException {
         TimeMetric timeMetric = metricFactory.timer("enqueueMailTime:" + queueName);
-        Session session = null;
 
         long nextDeliveryTimestamp = computeNextDeliveryTimestamp(delay, unit);
 
         try {
 
-            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
-
             int msgPrio = NORMAL_PRIORITY;
             Object prio = mail.getAttribute(MAIL_PRIORITY);
             if (prio instanceof Integer) {
@@ -227,7 +237,7 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
 
             Map<String, Object> props = getJMSProperties(mail, nextDeliveryTimestamp);
 
-            produceMail(session, props, msgPrio, mail);
+            produceMail(props, msgPrio, mail);
 
             enqueuedMailsMetric.increment();
             mailQueueSize.increment();
@@ -235,7 +245,6 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
             throw new MailQueueException("Unable to enqueue mail " + mail, e);
         } finally {
             timeMetric.stopAndPublish();
-            closeSession(session);
         }
     }
 
@@ -257,38 +266,28 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
     /**
      * Produce the mail to the JMS Queue
      */
-    protected void produceMail(Session session, Map<String, Object> props, int msgPrio, Mail mail) throws JMSException, MessagingException, IOException {
-        MessageProducer producer = null;
-
-        try {
-            Queue queue = session.createQueue(queueName);
-
-            producer = session.createProducer(queue);
-            ObjectMessage message = session.createObjectMessage();
-
-            for (Map.Entry<String, Object> entry : props.entrySet()) {
-                message.setObjectProperty(entry.getKey(), entry.getValue());
-            }
+    protected void produceMail(Map<String, Object> props, int msgPrio, Mail mail) throws JMSException, MessagingException, IOException {
+        ObjectMessage message = session.createObjectMessage();
 
-            long size = mail.getMessageSize();
-            ByteArrayOutputStream out;
-            if (size > -1) {
-                out = new ByteArrayOutputStream((int) size);
-            } else {
-                out = new ByteArrayOutputStream();
-            }
-            mail.getMessage().writeTo(out);
+        for (Map.Entry<String, Object> entry : props.entrySet()) {
+            message.setObjectProperty(entry.getKey(), entry.getValue());
+        }
 
-            // store the byte array in a ObjectMessage so we can use a
-            // SharedByteArrayInputStream later
-            // without the need of copy the day
-            message.setObject(out.toByteArray());
+        long size = mail.getMessageSize();
+        ByteArrayOutputStream out;
+        if (size > -1) {
+            out = new ByteArrayOutputStream((int) size);
+        } else {
+            out = new ByteArrayOutputStream();
+        }
+        mail.getMessage().writeTo(out);
 
-            producer.send(message, Message.DEFAULT_DELIVERY_MODE, msgPrio, Message.DEFAULT_TIME_TO_LIVE);
+        // store the byte array in a ObjectMessage so we can use a
+        // SharedByteArrayInputStream later
+        // without the need of copy the day
+        message.setObject(out.toByteArray());
 
-        } finally {
-            closeProducer(producer);
-        }
+        producer.send(message, Message.DEFAULT_DELIVERY_MODE, msgPrio, Message.DEFAULT_TIME_TO_LIVE);
     }
 
     protected Map<String, Object> getJMSProperties(Mail mail, long nextDelivery) throws MessagingException {
@@ -485,13 +484,9 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
     @SuppressWarnings("unchecked")
     @Override
     public long getSize() throws MailQueueException {
-        Session session = null;
         QueueBrowser browser = null;
         int size = 0;
         try {
-            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
-            Queue queue = session.createQueue(queueName);
-
             browser = session.createBrowser(queue);
 
             Enumeration<Message> messages = browser.getEnumeration();
@@ -506,7 +501,6 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
             throw new MailQueueException("Unable to get size of queue " + queueName, e);
         } finally {
             closeBrowser(browser);
-            closeSession(session);
         }
     }
 
@@ -649,17 +643,11 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
     @Override
     @SuppressWarnings("unchecked")
     public MailQueueIterator browse() throws MailQueueException {
-        Session session = null;
         QueueBrowser browser = null;
         try {
-            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
-            Queue queue = session.createQueue(queueName);
-
             browser = session.createBrowser(queue);
 
             final Enumeration<Message> messages = browser.getEnumeration();
-
-            final Session mySession = session;
             final QueueBrowser myBrowser = browser;
 
             return new MailQueueIterator() {
@@ -696,14 +684,11 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
                 @Override
                 public void close() {
                     closeBrowser(myBrowser);
-                    closeSession(mySession);
                 }
             };
 
         } catch (Exception e) {
-
             closeBrowser(browser);
-            closeSession(session);
 
             LOGGER.error("Unable to browse queue {}", queueName, e);
             throw new MailQueueException("Unable to browse queue " + queueName, e);
@@ -713,6 +698,8 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
     @Override
     public void dispose() {
         try {
+            closeProducer(producer);
+            closeSession(session);
             connection.close();
         } catch (JMSException e) {
             LOGGER.error("Error while closing session", e);


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org