cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "vincent Demay (JIRA)" <j...@apache.org>
Subject [jira] Created: (COCOON-1810) [PATCH] JMSEventMessageListener does not work
Date Thu, 23 Mar 2006 10:30:58 GMT
[PATCH] JMSEventMessageListener does not work
---------------------------------------------

         Key: COCOON-1810
         URL: http://issues.apache.org/jira/browse/COCOON-1810
     Project: Cocoon
        Type: Bug
  Components: Blocks: JMS  
    Versions: 2.1.9-dev (current SVN)    
    Reporter: vincent Demay
 Attachments: jndi.properties

Event if the rigth jars are copied to WEB-INF/lib, JMSEventMessageListener does not work,
it can not create a connection.

Here is a patch but it needs to copy the jndi.properties file from OpenJMS sample to the cocoon
classPath (see attachement)

Index: /cvs/cocoon/cocoon_BRANCH_2_1_X/src/blocks/jms/java/org/apache/cocoon/components/jms/AbstractMessageListener.java
===================================================================
--- /cvs/cocoon/cocoon_BRANCH_2_1_X/src/blocks/jms/java/org/apache/cocoon/components/jms/AbstractMessageListener.java
(revision 388114)
+++ /cvs/cocoon/cocoon_BRANCH_2_1_X/src/blocks/jms/java/org/apache/cocoon/components/jms/AbstractMessageListener.java
(working copy)
@@ -15,6 +15,8 @@
  */
 package org.apache.cocoon.components.jms;
 
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
 import javax.jms.JMSException;
 import javax.jms.MessageListener;
 import javax.jms.Session;
@@ -22,6 +24,10 @@
 import javax.jms.TopicConnection;
 import javax.jms.TopicSession;
 import javax.jms.TopicSubscriber;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
 import org.apache.avalon.framework.activity.Disposable;
 import org.apache.avalon.framework.activity.Initializable;
 import org.apache.avalon.framework.logger.AbstractLogEnabled;
@@ -101,7 +107,7 @@
     private JMSConnectionManager m_connectionManager;
 
     /* our session */
-    private TopicSession m_session;
+    private Session m_session;
 
     /* our subscriber */
     private TopicSubscriber m_subscriber;
@@ -121,7 +127,7 @@
         m_connectionName = parameters.getParameter(CONNECTION_PARAM);
         m_topicName = parameters.getParameter(TOPIC_PARAM);
 
-        m_subscriptionId = parameters.getParameter(SUBSCRIPTION_ID_PARAM, null);
+        m_subscriptionId = parameters.getParameter(SUBSCRIPTION_ID_PARAM, "default_id");
//should not be null
         m_selector = parameters.getParameter(MESSAGE_SELECTOR_PARAM, null);
 
     }
@@ -168,26 +174,25 @@
         // concrete implementations may want to override this
         m_acknowledgeMode = Session.DUPS_OK_ACKNOWLEDGE;
 
-        // register this MessageListener with a TopicSubscriber
-        final TopicConnection connection = (TopicConnection) m_connectionManager.getConnection(m_connectionName);
-        if (connection != null) {
-            m_session = connection.createTopicSession(false, m_acknowledgeMode);
-            final Topic topic = m_session.createTopic(m_topicName);
-            if (m_subscriptionId != null) {
-                m_subscriber = m_session.createDurableSubscriber(topic, m_subscriptionId,
m_selector, false);
-            }
-            else {
-                m_subscriber = m_session.createSubscriber(topic, m_selector, false);
-            }
+    	Context context;
+		try {
+			// The jndi.properties should be in the classpath
+			// it will set up the connection (see OpenJMS samples)
+			context = new InitialContext();
+			String factoryName = "ConnectionFactory";
+        	ConnectionFactory factory = (ConnectionFactory) context.lookup(factoryName);
+        	Topic topic = (Topic) context.lookup(m_topicName);
+        	Connection connection = factory.createConnection();
+        	m_session = connection.createSession(
+                       false, Session.AUTO_ACKNOWLEDGE);
+        	m_subscriber = m_session.createDurableSubscriber(
+                    topic, m_subscriptionId);
             m_subscriber.setMessageListener(this);
             // recover in case of reconnection
             m_session.recover();
-        }
-        else {
-            if (getLogger().isWarnEnabled()) {
-                getLogger().warn("Could not obtain JMS connection '" + m_connectionName +
"'");
-            }
-        }
+		} catch (NamingException e) {
+			getLogger().warn("Could not obtain JMS connection '" + m_connectionName + "'");
+		}
     }
 
     private void closeSubscriberAndSession() {


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Mime
View raw message