All Downloads are FREE. Search and download functionalities are using the official Maven repository.

javax.jms.TopicRequestor Maven / Gradle / Ivy

/*
 * @(#)TopicRequestor.java	1.20 02/04/09
 *
 * Copyright 1997-2002 Sun Microsystems, Inc. All Rights Reserved.
 *
 *  SUN PROPRIETARY/CONFIDENTIAL.
 * This software is the proprietary information of Sun Microsystems, Inc.  
 * Use is subject to license terms.
 * 
 */

package javax.jms;

/** The TopicRequestor helper class simplifies
  * making service requests.
  *
  * 

The TopicRequestor constructor is given a non-transacted * TopicSession and a destination Topic. It creates a * TemporaryTopic 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.QueueRequestor */ public class TopicRequestor { TopicSession session; // The topic session the topic belongs to. Topic topic; // The topic to perform the request/reply on. TemporaryTopic tempTopic; TopicPublisher publisher; TopicSubscriber subscriber; /** Constructor for the TopicRequestor 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 TopicSession the topic belongs to * @param topic the topic to perform the request/reply call on * * @exception JMSException if the JMS provider fails to create the * TopicRequestor due to some internal * error. * @exception InvalidDestinationException if an invalid topic is specified. */ public TopicRequestor(TopicSession session, Topic topic) throws JMSException { this.session = session; this.topic = topic; tempTopic = session.createTemporaryTopic(); publisher = session.createPublisher(topic); subscriber = session.createSubscriber(tempTopic); } /** Sends a request and waits for a reply. The temporary topic is used for * the JMSReplyTo destination; the first reply is returned, * and any following replies are discarded. * * @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. */ public Message request(Message message) throws JMSException { message.setJMSReplyTo(tempTopic); publisher.publish(message); return(subscriber.receive()); } /** Closes the TopicRequestor and its session. * *

Since a provider may allocate some resources on behalf of a * TopicRequestor 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 TopicSession object * passed to the TopicRequestor constructor. * * @exception JMSException if the JMS provider fails to close the * TopicRequestor due to some internal * error. */ public void close() throws JMSException { // publisher and consumer created by constructor are implicitly closed. session.close(); tempTopic.delete(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy