You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by "Jean-Baptiste Quenot (JIRA)" <ji...@apache.org> on 2006/03/29 11:55:38 UTC

[jira] Assigned: (COCOON-1810) [PATCH] JMSEventMessageListener does not work

     [ http://issues.apache.org/jira/browse/COCOON-1810?page=all ]

Jean-Baptiste Quenot reassigned COCOON-1810:
--------------------------------------------

    Assign To: Jean-Baptiste Quenot

> [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
>     Assignee: Jean-Baptiste Quenot
>  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