public void onMessage(Message message) { try { MapMessage request = (MapMessage) message; String correlationID = request.getJMSCorrelationID(); int itemId = request.getInt("itemId"); // Retrieve the connection factory connectionFactory = (TopicConnectionFactory) initialContext.lookup(BeanConfig.TopicConnectionFactoryName); // get the bids history String html = getBidHistory(itemId); // send the reply TemporaryTopic temporaryTopic = (TemporaryTopic) request.getJMSReplyTo(); if (temporaryTopic != null) { // create a connection connection = connectionFactory.createTopicConnection(); // create a session: no transaction, auto ack session = connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE); TextMessage reply = session.createTextMessage(); reply.setJMSCorrelationID(correlationID); reply.setText(html); replier = session.createPublisher(null); // unidentified publisher connection.start(); replier.publish(temporaryTopic, reply); replier.close(); session.close(); connection.stop(); connection.close(); } } catch (Exception e) { throw new EJBException("Message traitment failed for MDB_ViewBidHistory: " + e); } }
public void stop() { try { session.close(); } catch (JMSException e) { e.printStackTrace(); } try { conn.close(); } catch (JMSException e) { e.printStackTrace(); } }
public static void drainTopic(TopicConnection cnn, String topic) throws Exception { TopicSession session = cnn.createTopicSession(false, Session.DUPS_OK_ACKNOWLEDGE); Topic t = session.createTopic(topic); TopicSubscriber subscriber = session.createSubscriber(t); Message msg = subscriber.receiveNoWait(); while (msg != null) { try { msg.acknowledge(); } catch (JMSException e) { } msg = subscriber.receiveNoWait(); } subscriber.close(); session.close(); }
public static void topicPublish( TopicConnection cnn, String topicName, String payload, boolean transacted, int ack, String replyTo) throws JMSException { TopicSession session = cnn.createTopicSession(transacted, ack); Topic topic = session.createTopic(topicName); TopicPublisher publisher = session.createPublisher(topic); TextMessage msg = session.createTextMessage(); msg.setText(payload); msg.setJMSDeliveryMode(ack); if (replyTo != null) { msg.setJMSReplyTo(session.createTopic(replyTo)); } publisher.publish(msg); publisher.close(); session.close(); }