package org.springframework.issues;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.Topic;
import org.apache.activemq.command.ActiveMQTopic;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
public class MainThread {
public static void main(String[] args) throws Exception {
Topic request = new ActiveMQTopic("request");
for (int i = 0; i < 100; i++) {
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("context.xml");
ctx.start();
Connection conn = null;
Session requestSession = null;
try {
ConnectionFactory connFactory = (ConnectionFactory)ctx.getBean("connectionFactory");
EchoMessageListener messageListener = ctx.getBean(EchoMessageListener.class);
conn = connFactory.createConnection();
requestSession = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageConsumer requestConsumer = requestSession.createConsumer(request);
requestConsumer.setMessageListener(messageListener);
conn.start();
JmsTemplate template = ctx.getBean(JmsTemplate.class);
template.send(request, new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
return session.createBytesMessage();
}
});
} catch (Exception e) {
e.printStackTrace();
} finally {
if( requestSession != null ) {
requestSession.close();
}
if( conn != null ) {
conn.close();
}
}
ctx.close();
}
}
}