2012-02-15 126 views
3

我想使用Active MQ學習JMS應用程序。
所以下載了apache-activemq-5.5.1並啓動了服務器
並找到了示例代碼但是沒有工作。爲什麼會發生異常?
注:我添加的ActiveMQ庫,我的項目和庫包含org.slf4j模塊使用Active MQ的示例JMS示例

exception

import javax.jms.*; 
import org.apache.activemq.ActiveMQConnectionFactory; 
import javax.jms.MessageListener; 

     //JMS Producer   
     public class JMSProducer { 
       public void produce() { 
        String url = "tcp://localhost:61616"; 
        ConnectionFactory factory = new ActiveMQConnectionFactory(url); 
        try { 
         Connection connection = factory.createConnection(); 
         Session session = connection.createSession(false, 
           Session.AUTO_ACKNOWLEDGE); 
          Topic topic = session.createTopic("TestTopic"); 
          MessageProducer producer = session.createProducer(topic); 
          TextMessage msg = session.createTextMessage(); 
          msg.setText("Hello JMS World"); 
          producer.send(msg); 
        } 
        catch(JMSException exp) { 
        } 
       } 
      } 

    //JMS Consumer 
    public class JMSConsumer { 
      public void consume() { 
       String url = "tcp://localhost:61616"; 
       ConnectionFactory factory = new ActiveMQConnectionFactory(url); 
       try { 
        Connection connection = factory.createConnection(); 
        Session session = connection.createSession(false, 
         Session.AUTO_ACKNOWLEDGE); 
        Topic topic = session.createTopic("TestTopic"); 
        MessageConsumer consumer = session.createConsumer(topic); 
        JMSMessageListener listener = new JMSMessageListener(); 
        consumer.setMessageListener(listener); 
        connection.start(); 
       } 
       catch(JMSException exp) { 
       } 
      } 
     } 

//JMS Message Listener 
public class JMSMessageListener implements MessageListener { 
     @Override 
      public void onMessage(javax.jms.Message msg) { 
       System.out.println(msg.toString()); 
      } 
     } 

回答

5

報告該錯誤時org.slf4j.impl.StaticLoggerBinder 類不能被加載到內存中。當在類路徑上找不到合適的SLF4J綁定時,會發生這種情況。將 中的一個(並且只有一個)slf4j-nop.jar,slf4j-simple.jar, slf4j-log4j12.jar,slf4j-jdk14.jar或者類 上的logback-classic.jar路徑應該解決問題。

自1.6.0自SLF4J版本1.6起,在沒有綁定的情況下,SLF4J將默認爲無操作(NOP)記錄器實現。

您可以從項目下載頁面下載SLF4J綁定。

http://www.slf4j.org/codes.html#StaticLoggerBinder

+0

+1 - 這幫助了我。在嘗試使用JMS的不同方式並且使用比ActiveMQ 5.9.1要求的SLF4J更早版本的glassfish的情況下,有一個pom。註釋掉pom中的glassfish依賴關係導致一切正常。 – rishimaharaj 2014-04-27 04:50:01