/** * */ package hermes.ext.oracle.aq; /** * @author ppolavar * */ import hermes.Hermes; import hermes.HermesAdmin; import hermes.HermesAdminFactory; import hermes.HermesException; import javax.jms.ConnectionFactory; import javax.jms.JMSException; import javax.jms.Session; import javax.naming.NamingException; import oracle.jms.AQjmsConnection; import oracle.jms.AQjmsSession; import org.apache.log4j.Logger; public class OracleAQAdminFactory implements HermesAdminFactory { public static final String VERSION_STR = "$Header: /cvs/Integration/dev-tools/rib-aq-hermes-impl/src/hermes/ext/oracle/aq/OracleAQAdminFactory.java,v 1.1 2009/02/06 03:00:18 polavap Exp $"; private static final Logger LOG = Logger.getLogger(OracleAQAdminFactory.class); private AQjmsSession session; public OracleAQAdminFactory() { super(); } public HermesAdmin createSession(Hermes hermes, ConnectionFactory connectionFactory) throws JMSException, NamingException { AQConnectionFactory aqFactory = null; if (connectionFactory instanceof AQConnectionFactory) { aqFactory = (AQConnectionFactory) connectionFactory; LOG.debug("Connection string URL " + aqFactory.getUrl()); } else { throw new HermesException("Provider is not Oracle AQ"); } LOG.debug("JMS ConnectionFactory implementation class is " + hermes.getConnection().getClass()); AQjmsConnection aqJMS = (AQjmsConnection) hermes.getConnection(); // AQjmsConsumer // if session is null or if the sessions is not open // create a new session // if (session == null || !session.isOpen()) { session = (AQjmsSession) aqJMS.createSession(false, Session.AUTO_ACKNOWLEDGE); LOG.debug("Creating AQjmsSession session " + session); LOG.debug("Underlying database connection is " + session.getDBConnection()); AQAdmin ribAQ = new AQAdmin(hermes, session); return ribAQ; } }