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