我从来没有使用过 JMS
。最近我下载了 Activemq
并将所有 conf/activemq-*.xml
文件中的端口号从 61616
改为 61617
。我在命令提示符中运行了以下命令,并在浏览器上打开了控制台页面。
C:\Users\Infratab Bangalore\Desktop\Queueing\apache-activemq-5.8.0\bin>activemq
我希望用JMS
从Java代码中向Activemq
发送消息。为此,我编写了以下代码,并使用Apache Tomcat服务器运行我的代码。但它没有起作用。
这段代码是在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
}
}
}
我遇到了以下错误。
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)
你能给我提供建议,告诉我哪里写错了吗。
谢谢。
activemq-all-5.0.0.jar
、commons-io-2.4.jar
和geronimo-spec-corba-1.0.jar
。我在classpath中添加了以下路径:C:\ Users \ Infratab Bangalore \ Desktop \ Queueing \ geronimo-spec-corba-1.0.jar;
。所以我需要将commons-logging.jar
添加到我的classpath中吗?如果需要重新添加,我想下载它。这样可以吗? - Hanumathactivemq-all-5.0.0.jar
添加到我的 lib 文件夹中,而不是类路径中。你能看到我在 @Ashish 的回答中留下的评论吗? - Hanumath