org.apache.activemq.jms.pool
Class PooledConnection

java.lang.Object
  extended by org.apache.activemq.jms.pool.PooledConnection
All Implemented Interfaces:
javax.jms.Connection, javax.jms.QueueConnection, javax.jms.TopicConnection

public class PooledConnection
extends Object
implements javax.jms.TopicConnection, javax.jms.QueueConnection

Represents a proxy Connection which is-a TopicConnection and QueueConnection which is pooled and on close() will return its reference to the ConnectionPool backing it. NOTE this implementation is only intended for use when sending messages. It does not deal with pooling of consumers; for that look at a library like Jencks such as in this example


Field Summary
protected  ConnectionPool pool
           
 
Constructor Summary
PooledConnection(ConnectionPool pool)
          Creates a new PooledConnection instance that uses the given ConnectionPool to create and manage its resources.
 
Method Summary
protected  void assertNotClosed()
           
protected  void cleanupAllLoanedSessions()
          The PooledSession tracks all Sessions that it created and now we close them.
protected  void cleanupConnectionTemporaryDestinations()
          Remove all of the temporary destinations created for this connection.
 void close()
           
 javax.jms.ConnectionConsumer createConnectionConsumer(javax.jms.Destination destination, String selector, javax.jms.ServerSessionPool serverSessionPool, int maxMessages)
           
 javax.jms.ConnectionConsumer createConnectionConsumer(javax.jms.Queue queue, String selector, javax.jms.ServerSessionPool serverSessionPool, int maxMessages)
           
 javax.jms.ConnectionConsumer createConnectionConsumer(javax.jms.Topic topic, String s, javax.jms.ServerSessionPool serverSessionPool, int maxMessages)
           
 javax.jms.ConnectionConsumer createDurableConnectionConsumer(javax.jms.Topic topic, String selector, String s1, javax.jms.ServerSessionPool serverSessionPool, int i)
           
 javax.jms.QueueSession createQueueSession(boolean transacted, int ackMode)
           
 javax.jms.Session createSession(boolean transacted, int ackMode)
           
protected  javax.jms.Session createSession(SessionKey key)
           
 javax.jms.TopicSession createTopicSession(boolean transacted, int ackMode)
           
 String getClientID()
           
 javax.jms.Connection getConnection()
           
 javax.jms.ExceptionListener getExceptionListener()
           
 javax.jms.ConnectionMetaData getMetaData()
           
 int getNumActiveSessions()
           
 int getNumSessions()
           
 int getNumtIdleSessions()
           
 PooledConnection newInstance()
          Factory method to create a new instance.
 void onSessionClosed(PooledSession session)
          Called when the PooledSession is closed.
 void onTemporaryQueueCreate(javax.jms.TemporaryQueue tempQueue)
          Called on successful creation of a new TemporaryQueue.
 void onTemporaryTopicCreate(javax.jms.TemporaryTopic tempTopic)
          Called on successful creation of a new TemporaryTopic.
 void setClientID(String clientID)
           
 void setExceptionListener(javax.jms.ExceptionListener exceptionListener)
           
 void start()
           
 void stop()
           
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

pool

protected ConnectionPool pool
Constructor Detail

PooledConnection

public PooledConnection(ConnectionPool pool)
Creates a new PooledConnection instance that uses the given ConnectionPool to create and manage its resources. The ConnectionPool instance can be shared amongst many PooledConnection instances.

Parameters:
pool - The connection and pool manager backing this proxy connection object.
Method Detail

newInstance

public PooledConnection newInstance()
Factory method to create a new instance.


close

public void close()
           throws javax.jms.JMSException
Specified by:
close in interface javax.jms.Connection
Throws:
javax.jms.JMSException

start

public void start()
           throws javax.jms.JMSException
Specified by:
start in interface javax.jms.Connection
Throws:
javax.jms.JMSException

stop

public void stop()
          throws javax.jms.JMSException
Specified by:
stop in interface javax.jms.Connection
Throws:
javax.jms.JMSException

createConnectionConsumer

public javax.jms.ConnectionConsumer createConnectionConsumer(javax.jms.Destination destination,
                                                             String selector,
                                                             javax.jms.ServerSessionPool serverSessionPool,
                                                             int maxMessages)
                                                      throws javax.jms.JMSException
Specified by:
createConnectionConsumer in interface javax.jms.Connection
Throws:
javax.jms.JMSException

createConnectionConsumer

public javax.jms.ConnectionConsumer createConnectionConsumer(javax.jms.Topic topic,
                                                             String s,
                                                             javax.jms.ServerSessionPool serverSessionPool,
                                                             int maxMessages)
                                                      throws javax.jms.JMSException
Specified by:
createConnectionConsumer in interface javax.jms.TopicConnection
Throws:
javax.jms.JMSException

createDurableConnectionConsumer

public javax.jms.ConnectionConsumer createDurableConnectionConsumer(javax.jms.Topic topic,
                                                                    String selector,
                                                                    String s1,
                                                                    javax.jms.ServerSessionPool serverSessionPool,
                                                                    int i)
                                                             throws javax.jms.JMSException
Specified by:
createDurableConnectionConsumer in interface javax.jms.Connection
Specified by:
createDurableConnectionConsumer in interface javax.jms.TopicConnection
Throws:
javax.jms.JMSException

getClientID

public String getClientID()
                   throws javax.jms.JMSException
Specified by:
getClientID in interface javax.jms.Connection
Throws:
javax.jms.JMSException

getExceptionListener

public javax.jms.ExceptionListener getExceptionListener()
                                                 throws javax.jms.JMSException
Specified by:
getExceptionListener in interface javax.jms.Connection
Throws:
javax.jms.JMSException

getMetaData

public javax.jms.ConnectionMetaData getMetaData()
                                         throws javax.jms.JMSException
Specified by:
getMetaData in interface javax.jms.Connection
Throws:
javax.jms.JMSException

setExceptionListener

public void setExceptionListener(javax.jms.ExceptionListener exceptionListener)
                          throws javax.jms.JMSException
Specified by:
setExceptionListener in interface javax.jms.Connection
Throws:
javax.jms.JMSException

setClientID

public void setClientID(String clientID)
                 throws javax.jms.JMSException
Specified by:
setClientID in interface javax.jms.Connection
Throws:
javax.jms.JMSException

createConnectionConsumer

public javax.jms.ConnectionConsumer createConnectionConsumer(javax.jms.Queue queue,
                                                             String selector,
                                                             javax.jms.ServerSessionPool serverSessionPool,
                                                             int maxMessages)
                                                      throws javax.jms.JMSException
Specified by:
createConnectionConsumer in interface javax.jms.QueueConnection
Throws:
javax.jms.JMSException

createQueueSession

public javax.jms.QueueSession createQueueSession(boolean transacted,
                                                 int ackMode)
                                          throws javax.jms.JMSException
Specified by:
createQueueSession in interface javax.jms.QueueConnection
Throws:
javax.jms.JMSException

createTopicSession

public javax.jms.TopicSession createTopicSession(boolean transacted,
                                                 int ackMode)
                                          throws javax.jms.JMSException
Specified by:
createTopicSession in interface javax.jms.TopicConnection
Throws:
javax.jms.JMSException

createSession

public javax.jms.Session createSession(boolean transacted,
                                       int ackMode)
                                throws javax.jms.JMSException
Specified by:
createSession in interface javax.jms.Connection
Throws:
javax.jms.JMSException

onTemporaryQueueCreate

public void onTemporaryQueueCreate(javax.jms.TemporaryQueue tempQueue)
Called on successful creation of a new TemporaryQueue.

Parameters:
tempQueue - The TemporaryQueue just created.

onTemporaryTopicCreate

public void onTemporaryTopicCreate(javax.jms.TemporaryTopic tempTopic)
Called on successful creation of a new TemporaryTopic.

Parameters:
tempTopic - The TemporaryTopic just created.

onSessionClosed

public void onSessionClosed(PooledSession session)
Called when the PooledSession is closed.

Parameters:
session - The PooledSession that has been closed.

getConnection

public javax.jms.Connection getConnection()
                                   throws javax.jms.JMSException
Throws:
javax.jms.JMSException

assertNotClosed

protected void assertNotClosed()
                        throws javax.jms.IllegalStateException
Throws:
javax.jms.IllegalStateException

createSession

protected javax.jms.Session createSession(SessionKey key)
                                   throws javax.jms.JMSException
Throws:
javax.jms.JMSException

toString

public String toString()
Overrides:
toString in class Object

cleanupConnectionTemporaryDestinations

protected void cleanupConnectionTemporaryDestinations()
Remove all of the temporary destinations created for this connection. This is important since the underlying connection may be reused over a long period of time, accumulating all of the temporary destinations from each use. However, from the perspective of the lifecycle from the client's view, close() closes the connection and, therefore, deletes all of the temporary destinations created.


cleanupAllLoanedSessions

protected void cleanupAllLoanedSessions()
The PooledSession tracks all Sessions that it created and now we close them. Closing the PooledSession will return the internal Session to the Pool of Session after cleaning up all the resources that the Session had allocated for this PooledConnection.


getNumSessions

public int getNumSessions()
Returns:
the total number of Pooled session including idle sessions that are not currently loaned out to any client.

getNumActiveSessions

public int getNumActiveSessions()
Returns:
the number of Sessions that are currently checked out of this Connection's session pool.

getNumtIdleSessions

public int getNumtIdleSessions()
Returns:
the number of Sessions that are idle in this Connection's sessions pool.


Copyright © 2005-2013 The Apache Software Foundation. All Rights Reserved.