org.springframework.jms.connection
Class DelegatingConnectionFactory

java.lang.Object
  extended by org.springframework.jms.connection.DelegatingConnectionFactory
All Implemented Interfaces:
ConnectionFactory, QueueConnectionFactory, TopicConnectionFactory, InitializingBean, SmartConnectionFactory

public class DelegatingConnectionFactory
extends Object
implements SmartConnectionFactory, QueueConnectionFactory, TopicConnectionFactory, InitializingBean

ConnectionFactory implementation that delegates all calls to a given target ConnectionFactory, adapting specific create(Queue/Topic)Connection calls to the target ConnectionFactory if necessary (e.g. when running JMS 1.0.2 API based code against a generic JMS 1.1 ConnectionFactory, such as ActiveMQ's PooledConnectionFactory).

This class allows for being subclassed, with subclasses overriding only those methods (such as createConnection()) that should not simply delegate to the target ConnectionFactory.

Can also be defined as-is, wrapping a specific target ConnectionFactory, using the "shouldStopConnections" flag to indicate whether Connections obtained from the target factory are supposed to be stopped before closed. The latter may be necessary for some connection pools that simply return released connections to the pool, not stopping them while they sit in the pool.

Since:
2.0.2
Author:
Juergen Hoeller
See Also:
createConnection(), setShouldStopConnections(boolean), ConnectionFactoryUtils.releaseConnection(javax.jms.Connection, javax.jms.ConnectionFactory, boolean)

Constructor Summary
DelegatingConnectionFactory()
           
 
Method Summary
 void afterPropertiesSet()
          Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).
 Connection createConnection()
           
 Connection createConnection(String username, String password)
           
 QueueConnection createQueueConnection()
           
 QueueConnection createQueueConnection(String username, String password)
           
 TopicConnection createTopicConnection()
           
 TopicConnection createTopicConnection(String username, String password)
           
 ConnectionFactory getTargetConnectionFactory()
          Return the target ConnectionFactory that this ConnectionFactory delegates to.
 void setShouldStopConnections(boolean shouldStopConnections)
          Indicate whether Connections obtained from the target factory are supposed to be stopped before closed ("true") or simply closed ("false").
 void setTargetConnectionFactory(ConnectionFactory targetConnectionFactory)
          Set the target ConnectionFactory that this ConnectionFactory should delegate to.
 boolean shouldStop(Connection con)
          Should we stop the Connection, obtained from this ConnectionFactory?
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DelegatingConnectionFactory

public DelegatingConnectionFactory()
Method Detail

setTargetConnectionFactory

public void setTargetConnectionFactory(ConnectionFactory targetConnectionFactory)
Set the target ConnectionFactory that this ConnectionFactory should delegate to.


getTargetConnectionFactory

public ConnectionFactory getTargetConnectionFactory()
Return the target ConnectionFactory that this ConnectionFactory delegates to.


setShouldStopConnections

public void setShouldStopConnections(boolean shouldStopConnections)
Indicate whether Connections obtained from the target factory are supposed to be stopped before closed ("true") or simply closed ("false"). The latter may be necessary for some connection pools that simply return released connections to the pool, not stopping them while they sit in the pool.

Default is "false", simply closing Connections.

See Also:
ConnectionFactoryUtils.releaseConnection(javax.jms.Connection, javax.jms.ConnectionFactory, boolean)

afterPropertiesSet

public void afterPropertiesSet()
Description copied from interface: InitializingBean
Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).

This method allows the bean instance to perform initialization only possible when all bean properties have been set and to throw an exception in the event of misconfiguration.

Specified by:
afterPropertiesSet in interface InitializingBean

createConnection

public Connection createConnection()
                            throws JMSException
Specified by:
createConnection in interface ConnectionFactory
Throws:
JMSException

createConnection

public Connection createConnection(String username,
                                   String password)
                            throws JMSException
Specified by:
createConnection in interface ConnectionFactory
Throws:
JMSException

createQueueConnection

public QueueConnection createQueueConnection()
                                      throws JMSException
Specified by:
createQueueConnection in interface QueueConnectionFactory
Throws:
JMSException

createQueueConnection

public QueueConnection createQueueConnection(String username,
                                             String password)
                                      throws JMSException
Specified by:
createQueueConnection in interface QueueConnectionFactory
Throws:
JMSException

createTopicConnection

public TopicConnection createTopicConnection()
                                      throws JMSException
Specified by:
createTopicConnection in interface TopicConnectionFactory
Throws:
JMSException

createTopicConnection

public TopicConnection createTopicConnection(String username,
                                             String password)
                                      throws JMSException
Specified by:
createTopicConnection in interface TopicConnectionFactory
Throws:
JMSException

shouldStop

public boolean shouldStop(Connection con)
Description copied from interface: SmartConnectionFactory
Should we stop the Connection, obtained from this ConnectionFactory?

Specified by:
shouldStop in interface SmartConnectionFactory
Parameters:
con - the Connection to check
Returns:
whether a stop call is necessary
See Also:
Connection.stop()