JSF 2 と Ajax を使用する単純なデモ Web アプリでは、JMS キューからメッセージを受信する ManagedBean にメソッドがあります。
@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 接続を開いたり閉じたりするには、どのオプションが必要ですか?