How will I send messages to Activemq

21,982

Solution 1

Download common-logging.ja r file from

http://grepcode.com/snapshot/repo1.maven.org/maven2/commons-logging/commons-logging/1.1.3/

and place this into your classpath and run again.

Solution 2

The message is from the line 38 of ActiveMQPrefetchPolicy which occurs during the initialization of the class (due it is an static field) (example of the line in grepcode http://grepcode.com/file/repository.springsource.com/org.apache.activemq/com.springsource.org.apache.activemq/5.3.0/org/apache/activemq/ActiveMQPrefetchPolicy.java#38 ) . You will need common-logging.jar as it is a dependency in the classpath of your application to run. You might get other errors. I would recommend you to follow some sample in the internet, for example the example of the Chapter 8 of the ActiveMQ in Action -> http://code.google.com/p/activemq-in-action/source/browse/#svn%2Ftrunk%2Fexamples%2Fchapter8%2Fjms-webapp-jboss%253Fstate%253Dclosed

Regards,
Luan

Share:
21,982
Hanumath
Author by

Hanumath

Updated on July 18, 2022

Comments

  • Hanumath
    Hanumath almost 2 years

    I never work on JMS. Recently I downloaded Activemq and changed port no from 61616 to 61617 in all conf/activemq-*.xml files.I run the following command from command prompt and open console page on browser.

      C:\Users\Infratab Bangalore\Desktop\Queueing\apache-activemq-5.8.0\bin>activemq
    

    enter image description here

    Now I want to send messages from java code using JMS to Activemq.For this I wrote the following code. And run my code using Apache Tomcat server.it's not working

    This code is implemented in Eclipse.

    package PackageName;
    
    import java.io.IOException;
    import javax.jms.Connection;
    import javax.jms.ConnectionFactory;
    import javax.jms.Queue;
    import javax.jms.Session;
    import javax.jms.TextMessage;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.activemq.ActiveMQConnectionFactory;
    
    public class MessageProducer extends HttpServlet {
        @Override
        protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
            try {
                //created ConnectionFactory object for creating connection 
                ConnectionFactory factory = new ActiveMQConnectionFactory("admin", "admin", "tcp://localhost:61617");
                //Establish the connection
                Connection connection = factory.createConnection();
                Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
                Queue queue = session.createQueue("Test");
                //Added as a producer
                javax.jms.MessageProducer producer = session.createProducer(queue);
                // Create and send the message
                TextMessage msg = session.createTextMessage();
                msg.setText("TestMessage");
                producer.send(msg);
            } catch (Exception e) {
                // TODO: handle exception
            }
        }
    }
    

    I am getting the following error

     java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    org.apache.activemq.ActiveMQPrefetchPolicy.<clinit>(ActiveMQPrefetchPolicy.java:30)
    org.apache.activemq.ActiveMQConnectionFactory.<init>(ActiveMQConnectionFactory.java:88)
    PackageName.MessageProducer.service(MessageProducer.java:20)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
    

    can you suggest me, where I wrote wrong.

    Thanks.