在使用 JSF 2 和 Ajax 的简单演示 Web 应用程序中,ManagedBean 中有一个从 JMS 队列接收消息的方法:
@ManagedBean
public class Bean {
@Resource(mappedName = "jms/HabariConnectionFactory")
private ConnectionFactory connectionFactory;
@Resource(mappedName = "jms/TOOL.DEFAULT")
private Queue queue;
public String getMessage() {
String result = "no message";
try {
Connection connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageConsumer consumer = session.createConsumer(queue);
Message message = consumer.receiveNoWait();
if (message != null) {
result = ((TextMessage) message).getText();
}
connection.close();
} catch (JMSException ex) {
Logger.getLogger(Bean.class.getName()).log(Level.SEVERE, null, ex);
}
return result;
}
}
每次调用 getMessage() 方法时都会打开/关闭 JMS 连接。在 bean 生命周期中,我必须使用哪些选项打开和关闭 JMS 连接一次,以避免频繁的连接/断开操作?
首先,移动你的Connection
成为一个实例变量,以便可以从您的打开、关闭和getMessage
方法。
接下来,创建一个openConnection
方法与PostConstruct
注解。
@PostConstruct
public void openConnection() {
connection = connectionFactory.createConnection();
}
最后,创建一个closeConnection
方法与PreDestroy
注解。
@PreDestroy
public void closeConnection() {
connection.close();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)