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???