[ http://issues.apache.org/jira/browse/COCOON-1810?page=comments#action_12372214 ]
Jean-Baptiste Quenot commented on COCOON-1810: ---------------------------------------------- Maybe the samples provided by OpenJMS openjms-0.7.7-alpha-3 have changed > [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
