package com.topic; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.TextMessage; import javax.jms.Topic; import javax.jms.TopicConnection; import javax.jms.TopicConnectionFactory; import javax.jms.TopicSession; import javax.jms.TopicSubscriber; import javax.naming.Context; import javax.naming.NamingException; import weblogic.jndi.Environment; public class Subscriber implements MessageListener{ static Subscriber subscriber=null; public static void main(String[] args) { subscriber=new Subscriber(); subscriber.subscribe(); } public void subscribe(){ TopicConnectionFactory confactory= null; TopicConnection connection=null; TopicSession session=null; Environment env=new Environment(); env.setProviderURL("t3://localhost:7001"); env.setInitialContextFactory("weblogic.jndi.WLInitialContextFactory"); try { Context ic=env.getInitialContext(); confactory=(TopicConnectionFactory)ic.lookup("jms/confactory"); connection=confactory.createTopicConnection(); session=connection.createTopicSession(false,TopicSession.AUTO_ACKNOWLEDGE); Topic desttopic=(Topic)ic.lookup("jms/topic"); TopicSubscriber subscriber=session.createSubscriber(desttopic); subscriber.setMessageListener(this); connection.start(); /* * Make the current Thread go into a wait state so that the program doesnt end. * Many other threads are spawned by JMS which receives the published message. */ Object ob=new Object(); synchronized(ob) { ob.wait(); } } catch (NamingException e) { e.printStackTrace(); } catch (JMSException e) { e.printStackTrace(); } catch (Exception e){ e.printStackTrace(); } } public void onMessage(Message msg) { TextMessage message=(TextMessage)msg; System.out.println("Received message @ "+ System.currentTimeMillis()); try{ System.out.println(message.getText()); }catch(Exception e){ e.printStackTrace(); } } }