Repository: james-project Updated Branches: refs/heads/master 9aff85c34 -> 52316f64b
JAMES-1890 reuse JMS connection as it's a thread-safe object Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/52316f64 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/52316f64 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/52316f64 Branch: refs/heads/master Commit: 52316f64b21b6caa49e86d32e3a8b582474ccbd7 Parents: 9aff85c Author: Matthieu Baechler <[email protected]> Authored: Fri Dec 16 17:03:21 2016 +0100 Committer: Matthieu Baechler <[email protected]> Committed: Mon Dec 19 22:03:51 2016 +0100 ---------------------------------------------------------------------- .../james/queue/activemq/ActiveMQMailQueue.java | 11 --- .../apache/james/queue/jms/JMSMailQueue.java | 92 ++++---------------- .../james/queue/jms/JMSMailQueueItem.java | 7 -- 3 files changed, 19 insertions(+), 91 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/52316f64/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 d45a89e..8a80ad3 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 @@ -288,7 +288,6 @@ public class ActiveMQMailQueue extends JMSMailQueue implements ActiveMQSupport { @Override public long getSize() throws MailQueueException { - Connection connection = null; Session session = null; MessageConsumer consumer = null; MessageProducer producer = null; @@ -296,9 +295,6 @@ public class ActiveMQMailQueue extends JMSMailQueue implements ActiveMQSupport { long size; try { - connection = connectionFactory.createConnection(); - connection.start(); - session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); replyTo = session.createTemporaryQueue(); consumer = session.createConsumer(replyTo); @@ -364,13 +360,6 @@ public class ActiveMQMailQueue extends JMSMailQueue implements ActiveMQSupport { } catch (JMSException e1) { // ignore here } - - try { - if (connection != null) - connection.close(); - } catch (JMSException e1) { - // ignore here - } } // if we came to this point we should just fallback to super method http://git-wip-us.apache.org/repos/asf/james-project/blob/52316f64/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 f3ce680..a14b362 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 @@ -49,6 +49,7 @@ import javax.mail.internet.MimeMessage; import org.apache.james.core.MailImpl; import org.apache.james.core.MimeMessageCopyOnWriteProxy; +import org.apache.james.lifecycle.api.Disposable; import org.apache.james.metrics.api.Metric; import org.apache.james.queue.api.MailPrioritySupport; import org.apache.james.queue.api.MailQueue; @@ -58,6 +59,8 @@ import org.apache.mailet.Mail; import org.apache.mailet.MailAddress; import org.slf4j.Logger; +import com.google.common.base.Throwables; + /** * <p> * {@link MailQueue} implementation which use a JMS Queue for the<br> @@ -69,17 +72,22 @@ import org.slf4j.Logger; * {@link Mail} objects. * </p> */ -public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPrioritySupport { +public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPrioritySupport, Disposable { protected final String queueName; - protected final ConnectionFactory connectionFactory; + protected final Connection connection; protected final MailQueueItemDecoratorFactory mailQueueItemDecoratorFactory; protected final Metric enqueuedMailsMetric; protected final Logger logger; public final static String FORCE_DELIVERY = "FORCE_DELIVERY"; public JMSMailQueue(ConnectionFactory connectionFactory, MailQueueItemDecoratorFactory mailQueueItemDecoratorFactory, String queueName, Metric enqueuedMailsMetric, Logger logger) { - this.connectionFactory = connectionFactory; + try { + connection = connectionFactory.createConnection(); + connection.start(); + } catch (JMSException e) { + throw Throwables.propagate(e); + } this.mailQueueItemDecoratorFactory = mailQueueItemDecoratorFactory; this.queueName = queueName; this.enqueuedMailsMetric = enqueuedMailsMetric; @@ -100,16 +108,12 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori */ @Override public MailQueueItem deQueue() throws MailQueueException { - Connection connection = null; Session session = null; Message message; MessageConsumer consumer = null; while (true) { try { - connection = connectionFactory.createConnection(); - connection.start(); - session = connection.createSession(true, Session.SESSION_TRANSACTED); Queue queue = session.createQueue(queueName); consumer = session.createConsumer(queue, getMessageSelector()); @@ -135,13 +139,6 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori } catch (JMSException e1) { // ignore here } - - try { - if (connection != null) - connection.close(); - } catch (JMSException e1) { - // ignore here - } } } catch (Exception e) { @@ -168,12 +165,6 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori // ignore here } - try { - if (connection != null) - connection.close(); - } catch (JMSException e1) { - // ignore here - } throw new MailQueueException("Unable to dequeue next message", e); } } @@ -182,7 +173,6 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori @Override public void enQueue(Mail mail, long delay, TimeUnit unit) throws MailQueueException { - Connection connection = null; Session session = null; long mydelay = 0; @@ -193,8 +183,6 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori try { - connection = connectionFactory.createConnection(); - connection.start(); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); int msgPrio = NORMAL_PRIORITY; @@ -226,12 +214,6 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori // ignore here } - try { - if (connection != null) - connection.close(); - } catch (JMSException e) { - // ignore here - } } } @@ -491,13 +473,10 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori @SuppressWarnings("unchecked") @Override public long getSize() throws MailQueueException { - Connection connection = null; Session session = null; QueueBrowser browser = null; int size = 0; try { - connection = connectionFactory.createConnection(); - connection.start(); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Queue queue = session.createQueue(queueName); @@ -528,18 +507,11 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori // ignore here } - try { - if (connection != null) - connection.close(); - } catch (JMSException e1) { - // ignore here - } } } @Override public long flush() throws MailQueueException { - Connection connection = null; Session session = null; Message message = null; MessageConsumer consumer = null; @@ -547,8 +519,6 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori boolean first = true; long count = 0; try { - connection = connectionFactory.createConnection(); - connection.start(); session = connection.createSession(true, Session.SESSION_TRANSACTED); Queue queue = session.createQueue(queueName); @@ -606,12 +576,6 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori // ignore here } - try { - if (connection != null) - connection.close(); - } catch (JMSException e1) { - // ignore here - } } } @@ -635,7 +599,6 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori * @return messages */ public List<Message> removeWithSelector(String selector) throws MailQueueException { - Connection connection = null; Session session = null; Message message = null; MessageConsumer consumer = null; @@ -643,9 +606,6 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori List<Message> messages = new ArrayList<Message>(); try { - connection = connectionFactory.createConnection(); - connection.start(); - session = connection.createSession(true, Session.SESSION_TRANSACTED); Queue queue = session.createQueue(queueName); consumer = session.createConsumer(queue, selector); @@ -688,12 +648,6 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori // ignore here } - try { - if (connection != null) - connection.close(); - } catch (JMSException e1) { - // ignore here - } } } @@ -738,12 +692,9 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori @Override @SuppressWarnings("unchecked") public MailQueueIterator browse() throws MailQueueException { - Connection connection = null; Session session = null; QueueBrowser browser = null; try { - connection = connectionFactory.createConnection(); - connection.start(); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Queue queue = session.createQueue(queueName); @@ -751,7 +702,6 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori final Enumeration<Message> messages = browser.getEnumeration(); - final Connection myConnection = connection; final Session mySession = session; final QueueBrowser myBrowser = browser; @@ -813,12 +763,6 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori // ignore here } - try { - if (myConnection != null) - myConnection.close(); - } catch (JMSException e1) { - // ignore here - } } }; @@ -838,15 +782,17 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori // ignore here } - try { - if (connection != null) - connection.close(); - } catch (JMSException e1) { - // ignore here - } logger.error("Unable to browse queue " + queueName, e); throw new MailQueueException("Unable to browse queue " + queueName, e); } } + @Override + public void dispose() { + try { + connection.close(); + } catch (JMSException e) { + } + } + } http://git-wip-us.apache.org/repos/asf/james-project/blob/52316f64/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 98d084a..dd13591 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 @@ -74,13 +74,6 @@ public class JMSMailQueueItem implements MailQueueItem { } catch (JMSException e) { // ignore here } - - try { - if (connection != null) - connection.close(); - } catch (JMSException e) { - // ignore here - } } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
