This example uses the TopicSubscriber to receive a specified TextMessage:
import java.util.Properties; import javax.naming.*; import javax.jms.*;
/** * This class creates a topic and receives messages sent to that topic. */ public class SynchTopic { private static final String USER = "Administrator"; private static final String PASSWORD = "admin_pass"; private static final String SAP_NAMING_PROVIDER_URL = "localhost:50004"; private static final String SAP_INITIAL_CONTEXT_FACTORY_IMPL = "com.sap.engine.services.jndi.InitialContextFactoryImpl";
TopicConnectionFactory topicConnectionFactory = null; TopicConnection topicConnection = null; Topic topic = null; TopicSession topicSession = null; TopicSubscriber topicSubscriber = null; TextMessage textMessage = null;
/** * Gets InitialContext with default values. */ private InitialContext getInitialContext() { try { // set the properties for the InitalContext Properties properties = new Properties(); properties.put( Context.INITIAL_CONTEXT_FACTORY, SAP_INITIAL_CONTEXT_FACTORY_IMPL); properties.put(Context.PROVIDER_URL, SAP_NAMING_PROVIDER_URL); properties.put(Context.SECURITY_PRINCIPAL, USER); properties.put(Context.SECURITY_CREDENTIALS, PASSWORD);
// initalize and return the InitalContext with the specified properties return new InitialContext(properties);
} catch (NamingException ne) { System.out.println("NamingException: " + ne); }
return null; }
private void initJMS() { try { InitialContext context = getInitialContext();
// look up the TopicConnectionFactory topicConnectionFactory = (TopicConnectionFactory) context.lookup( " jmsfactory/default/TopicConnectionFactory");
// create topic connection topicConnection = topicConnectionFactory.createTopicConnection();
// start the connection topicConnection.start();
} catch (NamingException ne) { System.out.println("NamingException: " + ne); } catch (JMSException jmse) { System.out.println("JMSException: " + jmse); } }
/** * Closes all resorces used in this test. This should be called * when you want to finish using JMS. */ private void closeJMS() { try {
//close the jms topic session topicSession.close();
//close the jms topic connection topicConnection.close();
} catch (JMSException jmse) { System.out.println("JMSException: " + jmse); } }
/** * Creates topic connection and session. Receives messages sent * to the topic. */ public synchronized void aMethod() { try { // initializes all important data that will be used. initJMS();
// create topic session topicSession = topicConnection.createTopicSession( false, Session.AUTO_ACKNOWLEDGE);
// create topic topic = topicSession.createTopic("ExampleTopic");
// create subscriber topicSubscriber = topicSession.createSubscriber(topic);
textMessage = (TextMessage) topicSubscriber.receive();
// get message contents textMessage.getText();
// Closes all resources used in this test. closeJMS(); } catch (JMSException e) { System.out.println("" + e); } } } |