You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by de...@apache.org on 2011/08/01 13:46:51 UTC

svn commit: r1152747 - in /activemq/trunk: activemq-core/src/main/java/org/apache/activemq/ActiveMQSession.java activemq-web/src/main/java/org/apache/activemq/web/SessionPool.java

Author: dejanb
Date: Mon Aug  1 11:46:50 2011
New Revision: 1152747

URL: http://svn.apache.org/viewvc?rev=1152747&view=rev
Log:
https://issues.apache.org/jira/browse/AMQ-3430 - activemq web - session pool

Modified:
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQSession.java
    activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/SessionPool.java

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQSession.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQSession.java?rev=1152747&r1=1152746&r2=1152747&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQSession.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQSession.java Mon Aug  1 11:46:50 2011
@@ -724,6 +724,15 @@ public class ActiveMQSession implements 
     }
 
     /**
+     * Checks if the session is closed.
+     *
+     * @return true if the session is closed, false otherwise.
+     */
+    public boolean isClosed() {
+        return closed;
+    }
+
+    /**
      * Stops message delivery in this session, and restarts message delivery
      * with the oldest unacknowledged message.
      * <P>

Modified: activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/SessionPool.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/SessionPool.java?rev=1152747&r1=1152746&r2=1152747&view=diff
==============================================================================
--- activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/SessionPool.java (original)
+++ activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/SessionPool.java Mon Aug  1 11:46:50 2011
@@ -23,13 +23,17 @@ import javax.jms.ConnectionFactory;
 import javax.jms.JMSException;
 import javax.jms.Session;
 
+import org.apache.activemq.ActiveMQSession;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 /**
  * A simple pool of JMS Session objects intended for use by Queue browsers.
- * 
- * 
  */
 public class SessionPool {
 
+    private static final Logger LOG = LoggerFactory.getLogger(SessionPool.class);
+
     private ConnectionFactory connectionFactory;
     private Connection connection;
     private LinkedList<Session> sessions = new LinkedList<Session>();
@@ -78,8 +82,10 @@ public class SessionPool {
         Session answer = null;
         synchronized (sessions) {
             if (sessions.isEmpty()) {
+                LOG.trace("Creating a new session.");
                 answer = createSession();
             } else {
+                LOG.trace("Serving session from the pool.");
                 answer = sessions.removeLast();
             }
         }
@@ -87,10 +93,13 @@ public class SessionPool {
     }
 
     public void returnSession(Session session) {
-        if (session != null) {
+        if (session != null && !((ActiveMQSession) session).isClosed()) {
             synchronized (sessions) {
+                LOG.trace("Returning session to the pool.");
                 sessions.add(session);
             }
+        } else {
+            LOG.debug("Session closed or null, not returning to the pool.");
         }
     }