在glassfish服务器上使用JMS发送文本消息

在glassfish服务器上使用JMS发送文本消息,glassfish,jms,jndi,Glassfish,Jms,Jndi,我正在用glassfish服务器测试JMS,因此我想在glassfish服务器队列上发送简单的文本消息。我已经尝试过ActiveMQ,这很好,但我无法理解我可以在配置jndi.properties文件中放入什么,以及glassfish服务器需要哪个jar。请给我一些实施这个的想法 因为您使用的是Glassfish,所以最简单的方法就是编写简单的应用程序(EJB)来执行任务。您必须在GF中定义: ConnectionFactory(资源->JMS资源->连接工厂), 让我们给它命名为JNDI n

我正在用glassfish服务器测试JMS,因此我想在glassfish服务器队列上发送简单的文本消息。我已经尝试过ActiveMQ,这很好,但我无法理解我可以在配置jndi.properties文件中放入什么,以及glassfish服务器需要哪个jar。请给我一些实施这个的想法


因为您使用的是Glassfish,所以最简单的方法就是编写简单的应用程序(EJB)来执行任务。您必须在GF中定义:

  • ConnectionFactory(资源->JMS资源->连接工厂), 让我们给它命名为JNDI name
    jms/ConnectionFactory
  • 消息队列(资源->JMS资源->目标资源), 让我们给它命名为JNDI name
    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.jar
imq.jar