Chapter 23
898
Extended JMS Example
We will now wrap up our look at JMS with a more complicated example. In this example, there are two
classes: StockGuy and a PurchaserGuy. The StockGuy publishes stock quotes and listens for stock
purchase orders. The PurchaserGuy listens for certain stock quotes and issues purchase orders. Both
the StockGuy and the PurchaserGuy use a PurchaseOrder class, which represents a purchase order.
You can find the listing for this class later in the example.
The StockGuy Class
Let's look at the StockGuy first:
package JMSEXample;
import common.*;
import java.io.*;
import javax.jms.*;
import javax.naming.*;
public class StockGuy implements MessageListener
{
private TopicConnection topicConnection = null;
private TopicSession topicSession = null;
private Topic stockQuotesTopic = null;
private TopicPublisher stockQuotesPublisher = null;
private QueueConnection queueConnection = null;
private QueueSession queueSession = null;
private Queue purchaseOrdersQueue = null;
private QueueReceiver purchaseOrdersReceiver = null;
private void setup() throws NamingException, JMSException
{
InitialContext ctx = WeblogicJMSDetails.getInitialContext();
// Get a queue connection
QueueConnectionFactory queueConFactory = (QueueConnectionFactory)
ctx.lookup(WeblogicJMSDetails.JMS_CONNECTION_FACTORY);
queueConnection = queueConFactory.createQueueConnection();
// Create a queue receiver
queueSession =
queueConnection.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);
purchaseOrdersQueue = (Queue)ctx.lookup("PurchaseOrdersQueue");
// Set ourselves as the listener for the messages
purchaseOrdersReceiver = queueSession.createReceiver(purchaseOrdersQueue);
purchaseOrdersReceiver.setMessageListener(this);
// Get a topic connection
TopicConnectionFactory topicConFactory = (TopicConnectionFactory)
ctx.lookup(WeblogicJMSDetails.JMS_CONNECTION_FACTORY);;
topicConnection = topicConFactory.createTopicConnection();