【问题标题】:Sending Text Message using JMS on glassfish server在 glassfish 服务器上使用 JMS 发送文本消息
【发布时间】:2012-11-10 12:22:54
【问题描述】:

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

提前致谢

【问题讨论】:

    标签: glassfish jms jndi


    【解决方案1】:

    由于您使用的是 Glassfish,最简单的方法是编写简单的应用程序 (EJB) 来执行该任务。你必须在 GF 中定义:

    • ConnectionFactory(资源 -> 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

    【讨论】:

      猜你喜欢
      • 2012-11-18
      • 1970-01-01
      • 2014-10-16
      • 2014-02-02
      • 1970-01-01
      • 2015-12-03
      • 1970-01-01
      • 2012-07-08
      • 1970-01-01
      相关资源
      最近更新 更多