FileDocCategorySizeDatePackage
QueueRequestor.javaAPI DocGlassfish v2 API5543Fri May 04 22:36:16 BST 2007javax.jms

QueueRequestor

public class QueueRequestor extends Object
The QueueRequestor helper class simplifies making service requests.

The QueueRequestor constructor is given a non-transacted QueueSession and a destination Queue. It creates a TemporaryQueue for the responses and provides a request method that sends the request message and waits for its reply.

This is a basic request/reply abstraction that should be sufficient for most uses. JMS providers and clients are free to create more sophisticated versions.

version
1.0 - 8 July 1998
author
Mark Hapner
author
Rich Burridge
see
javax.jms.TopicRequestor

Fields Summary
QueueSession
session
Queue
queue
TemporaryQueue
tempQueue
QueueSender
sender
QueueReceiver
receiver
Constructors Summary
public QueueRequestor(QueueSession session, Queue queue)
Constructor for the QueueRequestor class.

This implementation assumes the session parameter to be non-transacted, with a delivery mode of either AUTO_ACKNOWLEDGE or DUPS_OK_ACKNOWLEDGE.

param
session the QueueSession the queue belongs to
param
queue the queue to perform the request/reply call on
exception
JMSException if the JMS provider fails to create the QueueRequestor due to some internal error.
exception
InvalidDestinationException if an invalid queue is specified.

        this.session = session;
        this.queue   = queue;
        tempQueue    = session.createTemporaryQueue();
        sender       = session.createSender(queue);
        receiver     = session.createReceiver(tempQueue);
    
Methods Summary
public voidclose()
Closes the QueueRequestor and its session.

Since a provider may allocate some resources on behalf of a QueueRequestor outside the Java virtual machine, clients should close them when they are not needed. Relying on garbage collection to eventually reclaim these resources may not be timely enough.

Note that this method closes the QueueSession object passed to the QueueRequestor constructor.

exception
JMSException if the JMS provider fails to close the QueueRequestor due to some internal error.


	// publisher and consumer created by constructor are implicitly closed.
	session.close();
        tempQueue.delete();
    
public Messagerequest(Message message)
Sends a request and waits for a reply. The temporary queue is used for the JMSReplyTo destination, and only one reply per request is expected.

param
message the message to send
return
the reply message
exception
JMSException if the JMS provider fails to complete the request due to some internal error.

	message.setJMSReplyTo(tempQueue);
	sender.send(message);
	return (receiver.receive());