1.
Create a Java project and set up lib as below
images
Note: Must
be correct libs and location of libs
2.
Create 2 classes as below code
Listener Class
/*
Use source code downloads, example commands,
and any other techniques at your own risk.
No warranty is provided.
*/
import java.util.Properties;
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.InitialContext;
import javax.naming.NamingException;
public class Listener implements MessageListener {
String
url_;
String
name_;
TopicConnection
conn = null;
TopicSession session = null;
Topic topic = null;
public Listener(String url, String
name) {
super();
url_ = url;
name_ = name;
try {
this.initializeListener();
} catch (Exception
e) {
System.out.println("Error
creating listener: " + e);
e.printStackTrace();
}
}
public
void onMessage(Message msg) {
TextMessage
tm = (TextMessage) msg;
try
{
System.out.println("Incoming
message: " + tm.getText());
}
catch (Exception e) {
e.printStackTrace();
}
}
private
void initializeListener() throws JMSException, NamingException {
Properties
props = new Properties();
props.setProperty(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
props.setProperty(Context.URL_PKG_PREFIXES,
"org.jboss.naming:org.jnp.interfaces");
props.setProperty(Context.PROVIDER_URL,
url_);
props.setProperty(Context.SECURITY_CREDENTIALS,
"bms");
props.setProperty(Context.SECURITY_AUTHENTICATION,
"bms");
Context
context = new InitialContext(props);
System.out.println("performing
lookup...");
Object
tmp = context.lookup("ConnectionFactory");
System.out.println("lookup
completed, making topic");
TopicConnectionFactory
tcf = (TopicConnectionFactory) tmp;
conn =
tcf.createTopicConnection("bms","bms");
topic
= (Topic) context.lookup(name_);
session
= conn.createTopicSession(false, TopicSession.AUTO_ACKNOWLEDGE);
conn.start();
TopicSubscriber
recv = session.createSubscriber(topic);
recv.setMessageListener(this);
}
public
void disconnect() throws JMSException {
if(conn
!= null) {
conn.stop();
}
if(session
!= null) {
session.close();
}
if(conn
!= null) {
conn.close();
}
}
public
static void main(String args[]) {
System.out.println("Starting
JMS Example Listener");
System.out.println("Program
will be active for 1 minute.");
//change
these values to your situtation:
Listener listener = new
Listener("jnp://10.26.72.56:1099",
"/jms/bms/NonlinearDataUpdateNotificationTopic");
//leave
it open for 2 minutes:
try
{
Thread.sleep(120000);
}
catch(Exception e) {
System.out.println("Error
sleeping: " + e);
e.printStackTrace();
}
try
{
listener.disconnect();
}
catch(Exception e) {
System.out.println("Error
terminating listener JMS objects: " + e);
e.printStackTrace();
}
System.out.println("Done
listening");
}
}
Sender Class
/*
Use source code downloads, example commands,
and any other techniques at your own risk.
No warranty is provided.
*/
import java.util.Properties;
import javax.jms.JMSException;
import javax.jms.TextMessage;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
import javax.jms.TopicPublisher;
import javax.jms.TopicSession;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class Sender {
String
url_;
String
name_;
TopicConnection
conn = null;
TopicSession
session = null;
Topic
topic = null;
public
Sender(String url, String name) throws JMSException, NamingException {
url_
= url;
name_
= name;
this.initializeSender();
}
private
void initializeSender() throws JMSException, NamingException {
Properties
props = new Properties(); props.setProperty(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
props.setProperty(Context.URL_PKG_PREFIXES,
"org.jboss.naming:org.jnp.interfaces");
props.setProperty(Context.PROVIDER_URL,
url_);
props.setProperty(Context.SECURITY_CREDENTIALS,
"bms");
props.setProperty(Context.SECURITY_AUTHENTICATION,
"bms");
Context context = new
InitialContext(props);
TopicConnectionFactory tcf =
(TopicConnectionFactory) context.lookup("ConnectionFactory");
conn =
tcf.createTopicConnection("bms","bms");
topic
= (Topic) context.lookup(name_);
session
= conn.createTopicSession(false, TopicSession.AUTO_ACKNOWLEDGE);
conn.start();
}
public void send(String text) throws
JMSException, NamingException {
// Send a text msg
try {
TopicPublisher send =
session.createPublisher(topic);
TextMessage tm =
session.createTextMessage(text);
send.publish(tm);
send.close();
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}
public
void disconnect() throws JMSException {
if(conn
!= null) {
conn.stop();
}
if(session
!= null) {
session.close();
}
if(conn
!= null) {
conn.close();
}
}
public
String getTopicName() {
return
name_;
}
public
String getTopicURL() {
return url_;
}
public
static void main(String args[]) throws Exception {
System.out.println("Starting
JMS Example Sender");
Sender sender = new
Sender("jnp://10.26.72.56:1099", "/jms/bms/NonlinearDataUpdateNotificationTopic");
System.out.println("Sending list of
Adam Sandler Movies " + sender.url_);
sender.send("Schedule 1995");
sender.send("Schedule 1996");
sender.send("Schedule 1998");
sender.send("Schedule 1999");
sender.send("Schedule 2002");
sender.send("Schedule 2004");
sender.send("Schedule
2003");
sender.disconnect();
System.out.println("JMS
Example Sender Complete - list sent");
}
}