2011-12-16 65 views
2

我想通過JNDI使用ActiveMQ,在Tomcat 7.0服務器中部署應用程序。 我已經爲在Tomcat中context.xml配置文件的ActiveMQ連接工廠和隊列的設置,他們是這樣的:activemq jndi tomcat錯誤

<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-lo gging jar,我已經添加到tomcat lib文件夾中。

我在哪裏錯了?

回答

3

commons-logging是一個與日誌確實有關的庫,但它來自Apache。另外slf4j只是一個外觀,你需要爲slf4j提供一個實際的實現。我會建議logback,這是在java中進行日誌記錄的「更好的」方法。所以你需要在classpath上使用3個jar:slf4j-api.jar,logback-core.jar和logback-classic.jar。 另一方面,如果你不想使用logback,那麼任何其他的實現將工作。