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

标签 glassfish jms jndi

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

提前致谢

最佳答案

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

  • ConnectionFactory(资源 -> JMS 资源 -> 连接工厂), 让我们给它命名 JNDI jms/ConnectionFactory
  • 消息队列(资源 -> JMS 资源 -> 目标资源), 让我们为其指定 JNDI 名称 jms/myQueue

下一步是在您需要编写的一些 EJB 中使用这些。这并不难:首先,你必须注入(inject):

@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

关于glassfish - 在 glassfish 服务器上使用 JMS 发送文本消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13507013/

相关文章:

jpa - Java EE 中的 Persistence.createEntityManagerFactory() 忽略 JTA 源

java 8 与 Glassfish 4.1 Artifact HelloWorld :war exploded: Server is not connected. 部署不可用

java - 如何使用Java配置在Tomcat 8中配置JNDI数据源:

java - 部署基于终端的 Java 应用程序

linux - 在glassfish 3.1.2中隐藏8383端口

java - GAE 消息服务

java - 如何在application.yml中定义bean?

java - 使用 JMS session 读取消息来创建新消息

java - spring jndi NamingException : Name [spring. liveBeansView.mbeanDomain] 未绑定(bind)在此上下文中

java - 配置数据源并将其注册到 JNDI