Make sure you also have apache-activemq-optional on the clients classpath as well as a http transport defined on the broker, the broker will need the same library for the http transport.
Cheers. On May 21, 2011, at 11:11 AM, Michael wrote: > Thanks Johan. I see the URL error. I'll fix it and give it another try! > > -----Original Message----- > From: Johan Edstrom [mailto:seij...@gmail.com] > Sent: Saturday, May 21, 2011 12:08 PM > To: users@activemq.apache.org > Subject: Re: java.lang.NoClassDefFoundError: > org/apache/commons/httpclient/HttpMethod > > Not sure what you have been reading really, > > But you are trying to use a jms "client/producer" against the activemq > webapp, not a transport, you are also missing commons-httpclient on the > classpath. > > /je > > On May 20, 2011, at 9:09 PM, Michael wrote: > >> I am trying to run a very simple ActiveMQ message producer client. >> The source code is provided below. >> >> >> >> I am launching the app from Eclipse using the Run menu. I have >> configured a Run Configuration For the client app. On the classpath >> tab of the Run Configuration for the app I have included >> activemq-all-5.5.0.jar, >> slf4j-simple-1.5.11 and httpclient-4.1.1.jar. >> >> >> >> When I run the app I get the following stack trace provided below. >> Can anyone tell me what might be wrong? >> >> >> >> Thank you. >> >> >> >> Exception in thread "main" java.lang.NoClassDefFoundError: >> org/apache/commons/httpclient/HttpMethod >> >> at >> org.apache.activemq.transport.http.HttpTransportFactory.createTranspor >> t(Http >> TransportFactory.java:75) >> >> at >> org.apache.activemq.transport.TransportFactory.doConnect(TransportFact >> ory.ja >> va:141) >> >> at >> org.apache.activemq.transport.TransportFactory.doConnect(TransportFact >> ory.ja >> va:51) >> >> at >> org.apache.activemq.transport.TransportFactory.connect(TransportFactor >> y.java >> :80) >> >> at >> org.apache.activemq.ActiveMQConnectionFactory.createTransport(ActiveMQ >> Connec >> tionFactory.java:243) >> >> at >> org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection >> (Activ >> eMQConnectionFactory.java:258) >> >> at >> org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection >> (Activ >> eMQConnectionFactory.java:230) >> >> at >> org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveM >> QConne >> ctionFactory.java:178) >> >> at >> JMSActiveMQPublisherApp.Execute(JMSActiveMQPublisherApp.java:39) >> >> at JMSActiveMQPublisherApp.main(JMSActiveMQPublisherApp.java:28) >> >> Caused by: java.lang.ClassNotFoundException: >> org.apache.commons.httpclient.HttpMethod >> >> at java.net.URLClassLoader$1.run(Unknown Source) >> >> at java.security.AccessController.doPrivileged(Native Method) >> >> at java.net.URLClassLoader.findClass(Unknown Source) >> >> at java.lang.ClassLoader.loadClass(Unknown Source) >> >> at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) >> >> at java.lang.ClassLoader.loadClass(Unknown Source) >> >> ... 10 more >> >> >> >> import java.util.Vector; >> >> >> >> import javax.jms.Connection; >> >> import javax.jms.Session; >> >> import javax.jms.Destination; >> >> import javax.jms.DeliveryMode; >> >> import javax.jms.MessageProducer; >> >> import javax.jms.TextMessage; >> >> >> >> import org.apache.activemq.ActiveMQConnection; >> >> import org.apache.activemq.ActiveMQConnectionFactory; >> >> >> >> public class JMSActiveMQPublisherApp >> >> { >> >> private String user = ActiveMQConnection.DEFAULT_USER; >> >> private String password = ActiveMQConnection.DEFAULT_PASSWORD; >> >> private String url = "http://localhost:8161/"; >> >> private String subject = "Subject.One"; >> >> private int messageCount = 10; >> >> private long sleepTime = 10000; >> >> >> >> >> >> private Destination destination; >> >> >> >> public static void main(String[] args) >> >> { >> >> JMSActiveMQPublisherApp app = new JMSActiveMQPublisherApp( ); >> >> app.Execute(); >> >> } >> >> >> >> public void Execute( ) >> >> { >> >> Connection connection = null; >> >> try >> >> { >> >> // Create the connection. >> >> ActiveMQConnectionFactory connectionFactory = >> >> new ActiveMQConnectionFactory(user, password, url); >> >> connection = connectionFactory.createConnection(); >> >> connection.start(); >> >> >> >> // Create the session >> >> // The argument false indicates that this session is not >> transacted >> >> Session session = >> >> connection.createSession(false, >> Session.AUTO_ACKNOWLEDGE); >> >> >> >> // Note that this method is not for creating the physical > topic. >> >> // The physical creation of topics is an administrative >> task and >> >> // is not to be initiated by the JMS API. >> >> // >> >> // So a publisher can not create new topics. The topics >> must >> >> // be created manually. The publisher can only send >> messages to >> >> // already existing topics. >> >> // >> >> // This appears to be a severely limited implementation of >> the >> >> // publish/subscribe model!!! >> >> destination = session.createTopic(subject); >> >> >> >> // Create the producer. >> >> MessageProducer producer = >> session.createProducer(destination); >> >> producer.setDeliveryMode(DeliveryMode.PERSISTENT); >> >> >> >> // Start sending messages >> >> SendLoop(session, producer); >> >> >> >> >> >> } >> >> catch (Exception e) >> >> { >> >> System.out.println("Exception: " + e.getMessage()); >> >> e.printStackTrace(); >> >> } >> >> finally >> >> { >> >> try >> >> { >> >> connection.close(); >> >> } >> >> catch (Throwable ignore) >> >> { >> >> } >> >> } >> >> } >> >> >> >> private void SendLoop(Session session, MessageProducer producer) >> throws Exception >> >> { >> >> >> >> for (int i = 0; i < messageCount || messageCount == 0; i++) { >> >> >> >> TextMessage message = session.createTextMessage("This is >> message " + messageCount + " for topic Subject.One!" ); >> >> >> >> producer.send(message); >> >> >> >> System.out.println("Message " + messageCount + " sent to >> topic Subject.One"); >> >> >> >> Thread.sleep(sleepTime); >> >> } >> >> } >> >> } >> >> >> > >