You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by js...@apache.org on 2002/02/15 16:54:08 UTC

cvs commit: jakarta-commons-sandbox/messenger/src/java/org/apache/commons/messenger JNDISessionFactory.java

jstrachan    02/02/15 07:54:08

  Modified:    messenger/src/conf Messenger.xml MessengerAshna.xml
                        MessengerJBoss.xml
               messenger/src/java/org/apache/commons/messenger
                        JNDISessionFactory.java
  Log:
  Applied Saimon's patch to differentiate between Topic and Queue Connections via a boolean property in the digester XML file as sometimes a Connection object implements both interfaces - such as JBossMQ
  
  Revision  Changes    Path
  1.4       +6 -6      jakarta-commons-sandbox/messenger/src/conf/Messenger.xml
  
  Index: Messenger.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/messenger/src/conf/Messenger.xml,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Messenger.xml	30 Oct 2001 08:30:09 -0000	1.3
  +++ Messenger.xml	15 Feb 2002 15:54:08 -0000	1.4
  @@ -4,21 +4,21 @@
     <!-- this example Messenger XML config file should work with J2EE SDK -->
     <!-- when running inside of a J2EE container                          -->
   
  -  <messenger name="topic">
  -    <jndi lookupName="java:comp/env/TopicConnectionFactory">
  +  <messenger name="topic" jndiDestinations="false">
  +    <jndi lookupName="java:comp/env/TopicConnectionFactory" topic="true">
         <property>
           <name>com.sun.jms.internal.java.naming.factory.initial</name>
           <value>com.sun.enterprise.naming.SerialInitContextFactory</value>
  -      </property>          
  +      </property>
       </jndi>
     </messenger>
   
  -  <messenger name="queue">
  -    <jndi lookupName="java:comp/env/QueueConnectionFactory">
  +  <messenger name="queue" jndiDestinations="false">
  +    <jndi lookupName="java:comp/env/QueueConnectionFactory" topic="false">
         <property>
           <name>com.sun.jms.internal.java.naming.factory.initial</name>
           <value>com.sun.enterprise.naming.SerialInitContextFactory</value>
  -      </property>          
  +      </property>
       </jndi>
     </messenger>
   
  
  
  
  1.2       +2 -2      jakarta-commons-sandbox/messenger/src/conf/MessengerAshna.xml
  
  Index: MessengerAshna.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/messenger/src/conf/MessengerAshna.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MessengerAshna.xml	15 Feb 2002 11:50:18 -0000	1.1
  +++ MessengerAshna.xml	15 Feb 2002 15:54:08 -0000	1.2
  @@ -5,7 +5,7 @@
     <!-- when running outside of a J2EE container                         -->
   
     <messenger name="topic" jndiDestinations="true">
  -    <jndi lookupName="TopicConnectionFactory">
  +    <jndi lookupName="TopicConnectionFactory" topic="true">
         <property>
           <name>java.naming.factory.initial</name>
           <value>com.ashnasoft.jms.client.jndi.InitialContextFactoryImpl</value>
  @@ -18,7 +18,7 @@
     </messenger>
   
     <messenger name="queue" jndiDestinations="true">
  -    <jndi lookupName="QueueConnectionFactory">
  +    <jndi lookupName="QueueConnectionFactory" topic="false">
         <property>
           <name>java.naming.factory.initial</name>
           <value>com.ashnasoft.jms.client.jndi.InitialContextFactoryImpl</value>
  
  
  
  1.2       +2 -2      jakarta-commons-sandbox/messenger/src/conf/MessengerJBoss.xml
  
  Index: MessengerJBoss.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/messenger/src/conf/MessengerJBoss.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MessengerJBoss.xml	15 Feb 2002 11:50:18 -0000	1.1
  +++ MessengerJBoss.xml	15 Feb 2002 15:54:08 -0000	1.2
  @@ -5,7 +5,7 @@
     <!-- when running outside of a J2EE container                         -->
   
     <messenger name="topic" jndiDestinations="true">
  -    <jndi lookupName="TopicConnectionFactory">
  +    <jndi lookupName="TopicConnectionFactory" topic="true">
         <property>
           <name>java.naming.factory.initial</name>
           <value>org.jnp.interfaces.NamingContextFactory</value>
  @@ -22,7 +22,7 @@
     </messenger>
   
     <messenger name="queue" jndiDestinations="true">
  -    <jndi lookupName="QueueConnectionFactory">
  +    <jndi lookupName="QueueConnectionFactory" topic="false">
         <property>
           <name>java.naming.factory.initial</name>
           <value>org.jnp.interfaces.NamingContextFactory</value>
  
  
  
  1.4       +76 -22    jakarta-commons-sandbox/messenger/src/java/org/apache/commons/messenger/JNDISessionFactory.java
  
  Index: JNDISessionFactory.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/messenger/src/java/org/apache/commons/messenger/JNDISessionFactory.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- JNDISessionFactory.java	29 Aug 2001 10:31:55 -0000	1.3
  +++ JNDISessionFactory.java	15 Feb 2002 15:54:08 -0000	1.4
  @@ -4,8 +4,8 @@
    * This software is published under the terms of the Apache Software License
    * version 1.1, a copy of which has been included with this distribution in
    * the LICENSE file.
  - * 
  - * $Id: JNDISessionFactory.java,v 1.3 2001/08/29 10:31:55 jstrachan Exp $
  + *
  + * $Id: JNDISessionFactory.java,v 1.4 2002/02/15 15:54:08 jstrachan Exp $
    */
   package org.apache.commons.messenger;
   
  @@ -13,42 +13,60 @@
   import java.util.Properties;
   
   import javax.jms.ConnectionFactory;
  +import javax.jms.Connection;
  +import javax.jms.Session;
  +import javax.jms.TopicConnection;
  +import javax.jms.QueueConnection;
  +import javax.jms.TopicConnectionFactory;
  +import javax.jms.QueueConnectionFactory;
   import javax.jms.JMSException;
   
   import javax.naming.Context;
   import javax.naming.InitialContext;
   import javax.naming.NamingException;
  +import javax.naming.NamingEnumeration;
   
   
   /** <p><code>JNDISessionFactory</code> is a Factory of JMS Session objects
     * which looks up the ConnectionFactory object from JNDI.</p>
     *
     * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
  -  * @version $Revision: 1.3 $
  +  * @version $Revision: 1.4 $
     */
   public class JNDISessionFactory extends SessionFactory {
   
       /** the initial JNDI context used to lookup ConnectionFactory objects */
  -    private Context context;
  -    
  +    public Context context;
  +
       /** the name used to lookup the ConnectionFactory */
       private String lookupName = "TopicConnectionFactory";
  -    
  -    
  -    
  +
  +    /** Wether Topics or Queue Connections should be forced */
  +    private boolean topic = false;
  +
       // Properties
  -    //-------------------------------------------------------------------------    
  -    
  +    //-------------------------------------------------------------------------
  +
       /** The JNDI Name of the ConnectionFactory */
       public String getLookupName() {
  -        return lookupName;        
  +        return lookupName;
       }
  -    
  +
       /** Sets the JNDI Name of the ConnectionFactory */
       public void setLookupName(String lookupName) {
  -        this.lookupName = lookupName;        
  +        this.lookupName = lookupName;
  +    }
  +
  +    /** To force Topic or Queue Connections */
  +    public void setTopic(boolean topic) {
  +    this.topic = topic;
       }
  -    
  +
  +    /** To force Topic or Queue Connections */
  +    public boolean isTopic() {
  +        return topic;
  +    }
  +
       /** Returns the JNDI Context used to lookup JMS ConnectionFactory objects */
       public Context getContext() throws NamingException {
           if ( context == null ) {
  @@ -56,21 +74,27 @@
           }
           return context;
       }
  -    
  +
       public void setContext(Context context) {
           this.context = context;
       }
  -    
  +
       // Implementation methods
  -    //-------------------------------------------------------------------------    
  -    
  -    /** Factory method used to create a connection factory. 
  +    //-------------------------------------------------------------------------
  +
  +    /** Factory method used to create a connection factory.
         * Lookup the ConnectionFactory in JNDI
         */
       protected ConnectionFactory createConnectionFactory() throws JMSException {
           try {
  -            //System.out.println( "Looking up: " + getLookupName() + " in JNDI" );
  -            return (ConnectionFactory) getContext().lookup( getLookupName() );
  +            System.out.println( "Looking up: " + getLookupName() + " in JNDI" );
  +
  +            if (!topic) {
  +                return (QueueConnectionFactory) getContext().lookup(getLookupName());
  +            }
  +
  +            else return (TopicConnectionFactory) getContext().lookup(getLookupName());
  +
           }
           catch (NamingException e) {
               JMSException jmsException = new JMSException( "Failed to lookup: " + getLookupName() + " using JNDI. " + e );
  @@ -78,7 +102,37 @@
               throw jmsException;
           }
       }
  -    /** Factory method used to create a connection factory. 
  +
  +    /** Re-implemented from SessionFactory. Method used to create a connection */
  +    public Connection createConnection() throws JMSException {
  +        ConnectionFactory factory = getConnectionFactory();
  +
  +        if ( factory == null ) {
  +            throw new JMSException( "No ConnectionFactory configured. Cannot create a JMS Session" );
  +        }
  +
  +        if (!topic) {
  +            return createQueueConnection((QueueConnectionFactory) factory);
  +        }
  +
  +        else return createTopicConnection((TopicConnectionFactory) factory);
  +    }
  +
  +    /** Re-implemented from SessionFactory. Creates a new Session instance */
  +    public Session createSession(Connection connection) throws JMSException {
  +
  +         if (!topic) {
  +                QueueConnection queueConnection = (QueueConnection) connection;
  +                return queueConnection.createQueueSession( isTransacted(), getAcknowledgeMode() );
  +            }
  +
  +           else {
  +                TopicConnection topicConnection = (TopicConnection) connection;
  +                return topicConnection.createTopicSession( isTransacted(), getAcknowledgeMode() );
  +            }
  +    }
  +
  +    /** Factory method used to create a connection factory.
         * Derived classes may wish to use JNDI to load the ConnectionFactory
         */
       protected Context createContext() throws NamingException {
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>