Example usage for org.springframework.jms.connection ConnectionFactoryUtils releaseConnection

List of usage examples for org.springframework.jms.connection ConnectionFactoryUtils releaseConnection

Introduction

In this page you can find the example usage for org.springframework.jms.connection ConnectionFactoryUtils releaseConnection.

Prototype

public static void releaseConnection(@Nullable Connection con, @Nullable ConnectionFactory cf,
        boolean started) 

Source Link

Document

Release the given Connection, stopping it (if necessary) and eventually closing it.

Usage

From source file:com.ccc.ccm.client.JMSTemplateAutowired.java

/**
* Execute the action specified by the given action object within a
* JMS Session. Generalized version of <code>execute(SessionCallback)</code>,
* allowing the JMS Connection to be started on the fly.
* <p>Use <code>execute(SessionCallback)</code> for the general case.
* Starting the JMS Connection is just necessary for receiving messages,
* which is preferably achieved through the <code>receive</code> methods.
* @param action callback object that exposes the Session
* @param startConnection whether to start the Connection
* @return the result object from working with the Session
* @throws JmsException if there is any problem
* @see #execute(SessionCallback)// ww w.j a v a  2  s . co  m
* @see #receive
*/
public <T> T execute(SessionCallback<T> action, boolean startConnection) throws JmsException {
    Assert.notNull(action, "Callback object must not be null");
    Connection conToClose = null;
    Session sessionToClose = null;
    try {
        Session sessionToUse = ConnectionFactoryUtils.doGetTransactionalSession(getConnectionFactory(),
                this.transactionalResourceFactory, startConnection);
        if (sessionToUse == null) {
            conToClose = createConnection();
            sessionToClose = createSession(conToClose);
            if (startConnection) {
                conToClose.start();
            }
            sessionToUse = sessionToClose;
        }
        if (logger.isDebugEnabled()) {
            logger.debug("Executing callback on JMS Session: " + sessionToUse);
        }
        return action.doInJms(sessionToUse);
    } catch (JMSException ex) {
        throw convertJmsAccessException(ex);
    } finally {
        JmsUtils.closeSession(sessionToClose);
        ConnectionFactoryUtils.releaseConnection(conToClose, getConnectionFactory(), startConnection);
    }
}

From source file:org.springframework.integration.jms.JmsOutboundGateway.java

private Object sendAndReceiveWithContainer(Message<?> requestMessage) throws JMSException {
    Connection connection = this.createConnection(); // NOSONAR - closed in ConnectionFactoryUtils.
    Session session = null;/*from ww w  .  j a  v  a  2 s .  c o m*/
    Destination replyTo = this.replyContainer.getReplyDestination();
    try {
        session = this.createSession(connection);

        // convert to JMS Message
        Object objectToSend = requestMessage;
        if (this.extractRequestPayload) {
            objectToSend = requestMessage.getPayload();
        }
        javax.jms.Message jmsRequest = this.messageConverter.toMessage(objectToSend, session);

        // map headers
        this.headerMapper.fromHeaders(requestMessage.getHeaders(), jmsRequest);

        jmsRequest.setJMSReplyTo(replyTo);
        connection.start();
        if (logger.isDebugEnabled()) {
            logger.debug("ReplyTo: " + replyTo);
        }

        Integer priority = new IntegrationMessageHeaderAccessor(requestMessage).getPriority();
        if (priority == null) {
            priority = this.priority;
        }
        Destination requestDestination = this.determineRequestDestination(requestMessage, session);

        Object reply = null;
        if (this.correlationKey == null) {
            /*
             * Remove any existing correlation id that was mapped from the inbound message
             * (it will be restored in the reply by normal ARPMH header processing).
             */
            jmsRequest.setJMSCorrelationID(null);
            reply = doSendAndReceiveAsyncDefaultCorrelation(requestDestination, jmsRequest, session, priority);
        } else {
            reply = doSendAndReceiveAsync(requestDestination, jmsRequest, session, priority);
        }
        /*
         * Remove the gateway's internal correlation Id to avoid conflicts with an upstream
         * gateway.
         */
        if (reply instanceof javax.jms.Message) {
            ((javax.jms.Message) reply).setJMSCorrelationID(null);
        }
        return reply;
    } finally {
        JmsUtils.closeSession(session);
        ConnectionFactoryUtils.releaseConnection(connection, this.connectionFactory, true);
    }
}

From source file:org.springframework.integration.jms.JmsOutboundGateway.java

private javax.jms.Message sendAndReceiveWithoutContainer(Message<?> requestMessage) throws JMSException {
    Connection connection = this.createConnection(); // NOSONAR - closed in ConnectionFactoryUtils.
    Session session = null;/* w w w. j  a  va2 s  .  c  om*/
    Destination replyTo = null;
    try {
        session = this.createSession(connection);

        // convert to JMS Message
        Object objectToSend = requestMessage;
        if (this.extractRequestPayload) {
            objectToSend = requestMessage.getPayload();
        }
        javax.jms.Message jmsRequest = this.messageConverter.toMessage(objectToSend, session);

        // map headers
        this.headerMapper.fromHeaders(requestMessage.getHeaders(), jmsRequest);

        replyTo = this.determineReplyDestination(requestMessage, session);
        jmsRequest.setJMSReplyTo(replyTo);
        connection.start();
        if (logger.isDebugEnabled()) {
            logger.debug("ReplyTo: " + replyTo);
        }

        Integer priority = new IntegrationMessageHeaderAccessor(requestMessage).getPriority();
        if (priority == null) {
            priority = this.priority;
        }
        javax.jms.Message replyMessage = null;
        Destination requestDestination = this.determineRequestDestination(requestMessage, session);
        if (this.correlationKey != null) {
            replyMessage = doSendAndReceiveWithGeneratedCorrelationId(requestDestination, jmsRequest, replyTo,
                    session, priority);
        } else if (replyTo instanceof TemporaryQueue || replyTo instanceof TemporaryTopic) {
            replyMessage = doSendAndReceiveWithTemporaryReplyToDestination(requestDestination, jmsRequest,
                    replyTo, session, priority);
        } else {
            replyMessage = doSendAndReceiveWithMessageIdCorrelation(requestDestination, jmsRequest, replyTo,
                    session, priority);
        }
        return replyMessage;
    } finally {
        JmsUtils.closeSession(session);
        this.deleteDestinationIfTemporary(replyTo);
        ConnectionFactoryUtils.releaseConnection(connection, this.connectionFactory, true);
    }
}

From source file:org.springframework.jms.connection.JmsResourceHolder.java

public void closeAll() {
    for (Session session : this.sessions) {
        try {/*from   w  ww.  j  a v  a 2s  . c  om*/
            session.close();
        } catch (Throwable ex) {
            logger.debug("Could not close synchronized JMS Session after transaction", ex);
        }
    }
    for (Connection con : this.connections) {
        ConnectionFactoryUtils.releaseConnection(con, this.connectionFactory, true);
    }
    this.connections.clear();
    this.sessions.clear();
    this.sessionsPerConnection.clear();
}