org.springframework.jms.connection

## Class DelegatingConnectionFactory

- java.lang.Object
- - org.springframework.jms.connection.DelegatingConnectionFactory

All Implemented Interfaces:
  ConnectionFactory, QueueConnectionFactory, TopicConnectionFactory, org.springframework.beans.factory.InitializingBean, SmartConnectionFactory

    public class DelegatingConnectionFactory
    extends Object
    implements SmartConnectionFactory, QueueConnectionFactory, TopicConnectionFactory, org.springframework.beans.factory.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).

As of Spring Framework 5, this class supports JMS 2.0 `JMSContext` calls and therefore requires the JMS 2.0 API to be present at runtime. It may nevertheless run against a JMS 1.1 driver (bound to the JMS 2.0 API) as long as no actual JMS 2.0 calls are triggered by the application's setup.

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
`void` `afterPropertiesSet()`
`Connection` `createConnection()`
`Connection` `createConnection(String username, String password)`
`JMSContext` `createContext()`
`JMSContext` `createContext(int sessionMode)`
`JMSContext` `createContext(String userName, String password)`
`JMSContext` `createContext(String userName, String password, int sessionMode)`
`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(@Nullable
                                           ConnectionFactory targetConnectionFactory)

Set the target ConnectionFactory that this ConnectionFactory should delegate to.

#### getTargetConnectionFactory

    @Nullable
    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"). An extra stop call 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()

Specified by:
  `afterPropertiesSet` in interface `org.springframework.beans.factory.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`

#### createContext

    public JMSContext createContext()

Specified by:
  `createContext` in interface `ConnectionFactory`

#### createContext

    public JMSContext createContext(String userName,
                                    String password)

Specified by:
  `createContext` in interface `ConnectionFactory`

#### createContext

    public JMSContext createContext(String userName,
                                    String password,
                                    int sessionMode)

Specified by:
  `createContext` in interface `ConnectionFactory`

#### createContext

    public JMSContext createContext(int sessionMode)

Specified by:
  `createContext` in interface `ConnectionFactory`

#### 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()`