org.springframework.jms.connection

## Class DelegatingConnectionFactory

- java.lang.Object
- - 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

    Constructors
    Constructor and Description
    `DelegatingConnectionFactory()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `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()`