try {
//链接
connection = connectionFactory.createQueueConnection();
connection.start();
//会话
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//目的队列
Queue q = session.createQueue(queueName);
//向目的队列发送消息的生产者
mp = session.createProducer(q);
//持久化存储
mp.setDeliveryMode(DeliveryMode.PERSISTENT);
//消息对象
ObjectMessage om = session.createObjectMessage(msg);
mp.send(om);
} catch (JMSException e) {
e.printStackTrace();
return false;
} finally {
if (mp != null) {
try {
mp.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
if (session != null) {
try {
session.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
例子mp、session和connection关闭分别用用不用try catch, 而不是一个try catch。这样当mp.close出现异常的时候的保证后面的关闭正常运行,但是如果全部都是在一个try catch中的时候,当mp关闭出现问题,后面的session和connection的关闭将不会执行。