我试图通过JNDI使用ActiveMQ,在Tomcat 7.0服务器中部署应用程序 . 我已经在Tomcat context.xml
配置文件中为ActiveMQ连接工厂和队列进行了设置,它们看起来像这样:
<Resource
auth="Container"
brokerName="LocalActiveMQBroker"
brokerURL="vm://localhost"
clientID="TomcatClientID"
description="JMS Connection Factory"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
name="jms/ConnectionFactory"
password="password"
type="org.apache.activemq.ActiveMQConnectionFactory"
userName="user"/>
<Resource
auth="Container"
description="Order Queue"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
name="jms/orderQ"
physicalName="orderQ"
type="org.apache.activemq.command.ActiveMQQueue"/>
我尝试以这种方式获得连接工厂:
nnectionFactory connectionFactory = (ConnectionFactory) context
.lookup("java:comp/env/jms/ConnectionFactory");
但我得到一个例外:
java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder
org.slf4j.LoggerFactory.getSingleton(LoggerFactory.java:230)
我试图找出异常的原因,但我发现它只能来自commons-logging jar,我已将其添加到tomcat lib文件夹中 .
我哪里错了?
1 回答
commons-logging是一个与日志记录有关的库,但它来自Apache . 另外slf4j只是一个外观,你需要为slf4j提供一个实际的实现 . 我建议使用logback,这是一种“更好”的java登录方式 . 所以你的类路径上需要3个jar:slf4j-api.jar,logback-core.jar和logback-classic.jar . 另一方面,如果您不想使用logback,那么任何其他实现都将起作用 .