2012-11-22 73 views
2

我正在使用glassfish服務器測試JMS,因此我想在glassfish服務器隊列上發送簡單的文本消息。我曾嘗試使用ActiveMQ,這很好,但我無法理解我可以在配置jndi.properties文件中放置哪些jar以及glassfish服務器需要哪個jar。請給我一些想法來實現這一點。在glassfish服務器上使用JMS發送文本消息

在此先感謝

回答

2

由於您使用Glassfish的,最簡單的方法是編寫簡單的應用程序(EJB)將執行的任務。你必須在GF定義:

  • 連接工廠(資源 - > JMS資源 - >連接工廠), 讓我們給它JNDI名稱jms/ConnectionFactory
  • 消息隊列(資源 - > JMS資源 - >目標資源), 讓我們給它JNDI名稱jms/myQueue

下一步是在你需要編寫的某些EJB中使用這些。這並不難:首先,你必須注入:

@Resource(mappedName="jms/ConnectionFactory") 
private ConnectionFactory cf; 

@Resource(mappedName="jms/myQueue") 
private Queue messageQueue; 

,然後用它是這樣的:

.. 
    javax.jms.Connection conn = null; 
    javax.jms.Session s = null; 
    javax.jms.MessageProducer mp = null 
    try { 
     conn = cf.createConnection(); 
     s = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); 
     mp = s.createProducer(messageQueue); 
     javax.jms.TextMessage msg = s.createTextMessage(); 
     msg.setStringProperty("your-key", "your-value"); 
     msg.setText("Your text message"); 
     mp.send(msg);   
    } 
    catch(JMSException ex) { 
     // exception handling 
    } 
    finally { 
     try { 
      // close Connection, Session and MessageProducer 
     } catch (JMSException ex) { 
       //exception handling 
     } 
    } 

關於配置,你不需要任何外部JAR,是需要附帶的一切。如果您不想編寫EJB,而是定期使用Java(獨立)應用程序,則必須包含jms.jarimq.jar