Conexoes com o mq nao se fecham

Boa tarde!

Tenho um produtor que produz mensgens para o MQ via JMS. O codigo esta abaixo:

public boolean enviarMensagem() throws Exception {
    	
        Queue queue = null;
        MessageProducer qSender = null;
        Session qSession = null;
        Connection qConn = null;
        InitialContext iniCtx = new InitialContext();
        try {
            
            ConnectionFactory qcn = (javax.jms.ConnectionFactory) iniCtx.lookup(jndiConnectionFactory);
            qConn = qcn.createConnection();
            qConn.start();
            
            qSession = qConn.createSession(false, QueueSession.AUTO_ACKNOWLEDGE);
            queue = (Queue) iniCtx.lookup(lookup);
            qSender = qSession.createProducer(queue);
            TextMessage tm = qSession.createTextMessage(elemento);
            
            tm.setJMSMessageID(identificador);
            tm.setJMSCorrelationID(identificador);
            
            qSender.send(tm);
            
            return true;
            
        } catch (Exception e) {
        	log.error("Falha ao tentar enviar mensagem para a fila MQ", e);
			throw e;
             
        } finally {
            fecharConexao(qSender);
            
            fecharConexao(qSession);
            
            fecharConexao(qConn);
            
        }


private void fecharConexao(Connection qConn) throws JMSException {
		try {
			if (qConn != null) {
				qConn.close();
			}

		} catch (JMSException e) {
            e.printStackTrace();

		}
	}

private void fecharConexao(Session qSession) throws JMSException {
		try {
			if (qSession != null) {
				qSession.close();
			}

		} catch (JMSException e) {
            e.printStackTrace();
       
		}
	}

private void fecharConexao(MessageProducer qSender) throws JMSException {
		try {
			if (qSender != null) {
				qSender.close();
			}
			
        } catch (JMSException e) {
            e.printStackTrace();
        
        }
	}

A aplicacao funciona e consigo postar mensagens para a fila de mq.

O meu problema é o seguinte…

Mesmo fechando as conexoes quando as conexoes nao estao sendo fechadas no MQ.

Ex: o meu processo roda de hora em hora, quando for 1 hora abre 20 conexoes com o mq, quando for 2 horas abre mais 20 conexoes com o mq dando um total de 40 conexoes com o MQ e assim por diante ate estourar o numero de conexoes com o MQ.

Como faco para fechar essas conexoes realmente, ou melhor, teria um jeito de reaproveitar essas conexoes?

Ja pesquisei na internet e aqui no forum e nao encontrei solucao para isso…

Teriam como me ajudar???