jms + eclipse

B

bumsys

I want to start java message service using eclipse + glassfish. Do
anyone know how to do it?

Class Producer:

package jms;

/*
* Copyright 2007 Sun Microsystems, Inc.
* All rights reserved. You may not modify, use,
* reproduce, or distribute this software except in
* compliance with the terms of the License at:
* http://developer.sun.com/berkeley_license.html
*/


import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.Queue;
import javax.jms.Topic;
import javax.jms.Connection;
import javax.jms.Session;
import javax.jms.MessageProducer;
import javax.jms.TextMessage;
import javax.jms.JMSException;
import javax.annotation.Resource;


/**
* The Producer class consists only of a main method,
* which sends several messages to a queue or topic.
*
* Run this program in conjunction with SynchConsumer or
* AsynchConsumer. Specify "queue" or "topic" on the
* command line when you run the program. By default, the
* program sends one message. Specify a number after the
* destination name to send that number of messages.
*/
public class Producer {
@Resource(mappedName = "jms/ConnectionFactory")
private static ConnectionFactory connectionFactory;
@Resource(mappedName = "jms/Queue")
private static Queue queue;
@Resource(mappedName = "jms/Topic")
private static Topic topic;

/**
* Main method.
*
* @param args the destination used by the example
* and, optionally, the number of
* messages to send
*/
public static void main(String[] args) {
final int NUM_MSGS;
Connection connection = null;

if ((args.length < 1) || (args.length > 2)) {
System.err.println(
"Program takes one or two arguments: "
+ "<dest_type> [<number-of-messages>]");
System.exit(1);
}

String destType = args[0];
System.out.println("Destination type is " + destType);

if (!(destType.equals("queue") || destType.equals("topic"))) {
System.err.println("Argument must be \"queue\" or " +
"\"topic\"");
System.exit(1);
}

if (args.length == 2) {
NUM_MSGS = (new Integer(args[1])).intValue();
} else {
NUM_MSGS = 1;
}

Destination dest = null;

try {
if (destType.equals("queue")) {
dest = (Destination) queue;
} else {
dest = (Destination) topic;
}
} catch (Exception e) {
System.err.println("Error setting destination: " +
e.toString());
e.printStackTrace();
System.exit(1);
}

/*
* Create connection.
* Create session from connection; false means session is
* not transacted.
* Create producer and text message.
* Send messages, varying text slightly.
* Send end-of-messages message.
* Finally, close connection.
*/
try {
connection = connectionFactory.createConnection();

Session session = connection.createSession(
false,
Session.AUTO_ACKNOWLEDGE);

MessageProducer producer = session.createProducer(dest);
TextMessage message = session.createTextMessage();

message.setText("Hello, my dear friend!");
System.out.println("Sending message: " + message.getText
());
producer.send(message);

for (int i = 0; i < NUM_MSGS; i++) {
message.setText("This is message " + (i + 1));
System.out.println("Sending message: " +
message.getText());
producer.send(message);
}

/*
* Send a non-text control message indicating end of
* messages.
*/
producer.send(session.createMessage());
} catch (JMSException e) {
System.err.println("Exception occurred: " + e.toString());
} finally {
if (connection != null) {
try {
connection.close();
} catch (JMSException e) {
}
}
}
}
}



Class AsynchConsumer:


package jms;

/*
* Copyright 2007 Sun Microsystems, Inc.
* All rights reserved. You may not modify, use,
* reproduce, or distribute this software except in
* compliance with the terms of the License at:
* http://developer.sun.com/berkeley_license.html
*/

import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.Queue;
import javax.jms.Topic;
import javax.jms.Connection;
import javax.jms.Session;
import javax.jms.MessageConsumer;
import javax.jms.TextMessage;
import javax.jms.JMSException;
import javax.annotation.Resource;

import java.io.InputStreamReader;
import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;

/**
* The AsynchConsumer class consists only of a main method, which
receives one
* or more messages from a queue or topic using asynchronous message
delivery.
* It uses the message listener TextListener. Run this program in
conjunction
* with Producer.
*
* Specify "queue" or "topic" name on the command line when you run
the program.
* To end the program, type Q or q on the command line.
*/
public class AsynchConsumer {
@Resource(mappedName = "jms/ConnectionFactory")
private static ConnectionFactory connectionFactory;
@Resource(mappedName = "jms/Queue")
private static Queue queue;
@Resource(mappedName = "jms/Topic")
private static Topic topic;

/**
* Main method.
*
* @param args
* the destination name and type used by the example
*/
public static void main(String[] args) {

String destType = null;
Connection connection = null;
Session session = null;
Destination dest = null;
MessageConsumer consumer = null;
TextListener listener = null;
TextMessage message = null;
InputStreamReader inputStreamReader = null;
char answer = '\0';

if (args.length != 1) {
System.err.println("Program takes one argument: <dest_type>");
System.exit(1);
}

destType = args[0];
System.out.println("Destination type is " + destType);

if (!(destType.equals("queue") || destType.equals("topic"))) {
System.err.println("Argument must be \"queue\" or \"topic\"");
System.exit(1);
}

try {
if (destType.equals("queue")) {
dest = (Destination) queue;
} else {
dest = (Destination) topic;
}
} catch (Exception e) {
System.err.println("Error setting destination: " + e.toString());
e.printStackTrace();
System.exit(1);
}

/*
* Create connection. Create session from connection; false means
* session is not transacted. Create consumer. Register message
listener
* (TextListener). Receive text messages from destination. When all
* messages have been received, type Q to quit. Close connection.
*/
try {
String url = "http://localhost:8080/SimplePublisher/simple";

URL hp = new URL(url);
URLConnection hpCon = hp.openConnection();

String download = hpCon.getHeaderField("download");

if (download.equals("true")) {
connection = connectionFactory.createConnection();
session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
consumer = session.createConsumer(dest);
listener = new TextListener();
consumer.setMessageListener(listener);
connection.start();
System.out.println("To end program, type Q or q, "
+ "then <return>");
inputStreamReader = new InputStreamReader(System.in);

while (!((answer == 'q') || (answer == 'Q'))) {
try {
answer = (char) inputStreamReader.read();
} catch (IOException e) {
System.err.println("I/O exception: " + e.toString());
}
}

} else {
System.out.println("download is false");
}
} catch (IOException e) {
System.err.println("Exception occurred: " + e.toString());
} catch (JMSException e) {
System.err.println("Exception occurred: " + e.toString());
} finally {
if (connection != null) {
try {
connection.close();
} catch (JMSException e) {
}
}
}
}
}


Class TextListener:


package jms;

/*
* Copyright 2007 Sun Microsystems, Inc.
* All rights reserved. You may not modify, use,
* reproduce, or distribute this software except in
* compliance with the terms of the License at:
* http://developer.sun.com/berkeley_license.html
*/


import javax.jms.MessageListener;
import javax.jms.Message;
import javax.jms.TextMessage;
import javax.jms.JMSException;


/**
* The TextListener class implements the MessageListener
* interface by defining an onMessage method that displays
* the contents of a TextMessage.
*
* This class acts as the listener for the SimpleAsynchConsumer
* class.
*/
public class TextListener implements MessageListener {
/**
* Casts the message to a TextMessage and displays its text.
*
* @param message the incoming message
*/
TextMessage msg = null;

public TextMessage getMsg() {
return msg;
}

public void onMessage(Message message) {

try {
if (message instanceof TextMessage) {
msg = (TextMessage) message;
System.out.println("Reading message: " + msg.getText
());
} else {
System.err.println("Message is not a TextMessage");
}
} catch (JMSException e) {
System.err.println("JMSException in onMessage(): " +
e.toString());
} catch (Throwable t) {
System.err.println("Exception in onMessage():" +
t.getMessage());
}
}


}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,057
Latest member
KetoBeezACVGummies

Latest Threads

Top