/**
*
*/
package hermes.ext.oracle.aq;
/**
* @author ppolavar
*
*/
import hermes.config.DestinationConfig;
import hermes.impl.DestinationManager;
import hermes.impl.TopicBrowser;
import javax.jms.JMSException;
import javax.jms.Session;
import oracle.jms.AQjmsSession;
import org.apache.log4j.Logger;
/**
* A queue browser that actually works on a topic, the browse will never stop.
*
* @author colincrist@hermesjms.com
* @version $Id: AQTopicBrowser.java,v 1.1 2009/02/06 03:00:17 polavap Exp $
*/
public class AQTopicBrowser extends TopicBrowser {
public static final String VERSION_STR = "$Header: /cvs/Integration/dev-tools/rib-aq-hermes-impl/src/hermes/ext/oracle/aq/AQTopicBrowser.java,v 1.1 2009/02/06 03:00:17 polavap Exp $";
@SuppressWarnings("unused")
private static final Logger LOG = Logger.getLogger(TopicBrowser.class);
private Session session;
private DestinationConfig dConfig;
private HermesShutdownHook shutdownHook;
/**
* AQ TopicBrowser constructor.
*/
public AQTopicBrowser(Session session,
DestinationManager destinationManager, DestinationConfig dConfig,
HermesShutdownHook shutdownHook) {
super(session, destinationManager, dConfig);
this.session = session;
this.dConfig = dConfig;
this.shutdownHook = shutdownHook;
}
/**
* Stop the browser, this will stop any iteration running and unsubscribe.
*/
public void close() throws JMSException {
// run the super class's close
super.close();
if (session instanceof AQjmsSession) {
// This doesn't work, hence had to use the AQ API
// AQjmsSession aqJmsSession = (AQjmsSession) session;
// aqJmsSession.unsubscribe(aqJmsSession.getTopic("polavap",
// dConfig.getName()), dConfig.getClientID());
shutdownHook.removeSubscriber(dConfig, true);
}
}
}