[jboss-svn-commits] JBL Code SVN: r18350 - labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/routing.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Feb 6 13:19:15 EST 2008


Author: beve
Date: 2008-02-06 13:19:15 -0500 (Wed, 06 Feb 2008)
New Revision: 18350

Modified:
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/routing/JMSRouter.java
Log:
Work for JBESB-1538 "Add Topic support to JMSRouter"


Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/routing/JMSRouter.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/routing/JMSRouter.java	2008-02-06 17:20:25 UTC (rev 18349)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/routing/JMSRouter.java	2008-02-06 18:19:15 UTC (rev 18350)
@@ -35,6 +35,7 @@
 import javax.jms.ObjectMessage;
 import javax.jms.Queue;
 import javax.jms.QueueSession;
+import javax.jms.Session;
 import javax.jms.TextMessage;
 import javax.naming.Context;
 import javax.naming.NamingException;
@@ -50,8 +51,7 @@
 import org.jboss.soa.esb.common.Configuration;
 import org.jboss.soa.esb.helpers.ConfigTree;
 import org.jboss.soa.esb.helpers.KeyValuePair;
-import org.jboss.soa.esb.helpers.NamingContextException;
-import org.jboss.soa.esb.helpers.NamingContextPool;
+import org.jboss.soa.esb.helpers.NamingContext;
 import org.jboss.soa.esb.notification.jms.DefaultJMSPropertiesSetter;
 import org.jboss.soa.esb.notification.jms.JMSPropertiesSetter;
 import org.jboss.soa.esb.util.Util;
@@ -206,7 +206,7 @@
         	sb.append("Exception while sending message [").append(message).append("] to destination [");
             
             if (queueSetup != null)
-            	sb.append(queueSetup.queueName).append("].");
+            	sb.append(queueSetup.destinationName).append("].");
             else
             	sb.append("null ].");
             
@@ -223,7 +223,7 @@
         	jmsMessage = queueSetup.jmsSession.createTextMessage();
 
             if(logger.isDebugEnabled()) {
-                logger.debug("Sending Text message: [" + objectFromBody + "] to destination [" + queueSetup.queueName + "].");
+                logger.debug("Sending Text message: [" + objectFromBody + "] to destination [" + queueSetup.destinationName + "].");
             }
             
             ((TextMessage)jmsMessage).setText((String)objectFromBody);
@@ -231,7 +231,7 @@
         	jmsMessage = queueSetup.jmsSession.createBytesMessage();
         
             if(logger.isDebugEnabled()) {
-                logger.debug("Sending byte[] message: [" + objectFromBody + "] to destination [" + queueSetup.queueName + "].");
+                logger.debug("Sending byte[] message: [" + objectFromBody + "] to destination [" + queueSetup.destinationName + "].");
             }
             
             ((BytesMessage)jmsMessage).writeBytes((byte[])objectFromBody);
@@ -264,7 +264,7 @@
 		jmsMessage = queueSetup.jmsSession.createObjectMessage();
 		
 		if(logger.isDebugEnabled()) {
-		    logger.debug("Sending Object message: [" + message + "] to destination [" + queueSetup.queueName + "].");
+		    logger.debug("Sending Object message: [" + message + "] to destination [" + queueSetup.destinationName + "].");
 		}
 		((ObjectMessage)jmsMessage).setObject((Serializable) message);
 		return jmsMessage;
@@ -321,50 +321,47 @@
 	}
     
     private static class JMSSendQueueSetup {
-        QueueSession jmsSession;
-        Queue jmsQueue;
+        Session jmsSession;
+        Destination jmsDestination;
         MessageProducer jmsProducer;
-        String queueName;
+        String destinationName;
         JmsConnectionPool pool;
         Properties environment;
         
         // TODO: Modify to support topic destinations too
 
-        private JMSSendQueueSetup(String queueName) throws NamingException, JMSException, ConnectionException, NamingContextException  {
+        private JMSSendQueueSetup(String destinationName) throws NamingException, JMSException, ConnectionException  {
             environment = new Properties();
             environment.setProperty(Context.PROVIDER_URL, Configuration.getJndiServerURL());
             environment.setProperty(Context.INITIAL_CONTEXT_FACTORY, Configuration.getJndiServerContextFactory());
             environment.setProperty(Context.URL_PKG_PREFIXES, Configuration.getJndiServerPkgPrefix());
-            Context oCtx = NamingContextPool.getNamingContext(environment);
+            Context oCtx = NamingContext.getServerContext(environment);
+            pool = JmsConnectionPoolContainer.getPool(environment, "ConnectionFactory", JMSEpr.QUEUE_TYPE);
+            
+            this.destinationName = destinationName;
+            
+            jmsSession = pool.getQueueSession();
+            boolean clean = true ;
             try {
-                pool = JmsConnectionPoolContainer.getPool(environment, "ConnectionFactory", JMSEpr.QUEUE_TYPE);
-                
-                this.queueName = queueName;
-                
-                jmsSession = pool.getQueueSession();
-                boolean clean = true ;
                 try {
+                	jmsDestination = (Destination)oCtx.lookup(destinationName);
+                } catch (NamingException ne) {
                     try {
-                    	jmsQueue = (Queue) oCtx.lookup(queueName);
-                    } catch (NamingException ne) {
-                        try {
-                            oCtx = NamingContextPool.replaceNamingContext(oCtx, environment);
-                            jmsQueue = (Queue) oCtx.lookup(queueName);
-                        } catch (NamingException nex) {
-                            //ActiveMQ
-                            jmsQueue = jmsSession.createQueue(queueName);
-                        }
+                        oCtx = NamingContext.getFreshServerContext(environment);
+                        jmsDestination = (Queue) oCtx.lookup(destinationName);
+                    } catch (NamingException nex) {
+                        //ActiveMQ
+                        jmsDestination = jmsSession.createQueue(destinationName);
                     }
-                    jmsProducer = jmsSession.createSender(jmsQueue);
-                    clean = false ;
-                } finally {
-                    if (clean) {
-                        pool.closeSession(jmsSession) ;
-                    }
                 }
+                jmsProducer = jmsSession.createProducer(jmsDestination);
+                clean = false ;
             } finally {
-                NamingContextPool.releaseNamingContext(oCtx) ;
+                if (clean) {
+                    pool.closeSession(jmsSession) ;
+                }
             }
+            
         }
         
         public void setDeliveryMode(final int deliveryMode ) throws JMSException
@@ -387,13 +384,14 @@
         
         private void close() {
             try {
-	            pool.closeSession(jmsSession);
                 if (jmsProducer!=null) {
                     jmsProducer.close();                    
                 }
             } catch (Exception e) {
                 logger.error("Unable to close JMS Queue Setup.", e);
-            } 
+            } finally {
+                pool.closeSession(jmsSession);
+            }
         }
     }
 




More information about the jboss-svn-commits mailing list