gpt4 book ai didi

jakarta-ee - 我可以使用哪些 maven 依赖项为 Glassfish 创建独立的 JMS 客户端?

转载 作者:行者123 更新时间:2023-12-04 11:59:50 25 4
gpt4 key购买 nike

我想为托管在我的 Glassfish 服务器上的 JMS 主题创建一个非常简单的 JMS 独立客户端。

我的项目是使用 maven 构建的。

我知道关于要使用的 JMS 依赖项似乎有些困惑,所以,我应该在我的 pom 中使用哪些依赖项

  • 连接到我的 JNDI 上下文
  • 能够阅读我的 JMS 主题吗?

  • 我的 Java 测试方法是
    /** Thanks to WELD CDI, this method is not static */
    public void main(@Observes ContainerInitialized event) throws Throwable {
    Context context = new InitialContext();
    ConnectionFactory factory = (ConnectionFactory) context.lookup(JMSNotifierConstants.CONNECTION_FACTORY_NAME);
    Connection connection = factory.createConnection();
    Topic topic = (Topic) context.lookup(JMSNotifierConstants.NOTIFICATION_TOPIC);
    Session session = connection.createSession(false,
    Session.AUTO_ACKNOWLEDGE);
    MessageConsumer consumer = session.createConsumer(topic);
    connection.start();
    while (true) {
    Message received = consumer.receive();
    System.out.println(received);
    }
    }

    我的 pom 目前包含以下依赖项
        <dependency>
    <groupId>javax.enterprise</groupId>
    <artifactId>cdi-api</artifactId>
    <version>1.0-SP1</version>
    </dependency>
    <dependency>
    <groupId>org.jboss.weld</groupId>
    <artifactId>weld-se</artifactId>
    <version>1.0.1-Final</version>
    </dependency>
    <dependency>
    <groupId>org.jboss.weld</groupId>
    <artifactId>weld-logger</artifactId>
    <version>1.0.0-CR2</version>
    <type>jar</type>
    <scope>compile</scope>
    </dependency>
    <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.6.1</version>
    </dependency>
    <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-jdk14</artifactId>
    <version>1.6.1</version>
    </dependency>
    <dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.jms</artifactId>
    <version>3.0</version>
    <scope>compile</scope>
    </dependency>
    <dependency>
    <groupId>org.glassfish.extras</groupId>
    <artifactId>appserv-rt</artifactId>
    <version>3.1</version>
    </dependency>

    最佳答案

    好的,这个比较棘手。

    经过一番搜索和尝试,我删除了焊接依赖项(为了回到更经典的 main)。

    然后,我更换了我的(旧式)appserv-rt.jar依赖于

        <dependency>
    <groupId>org.glassfish.appclient</groupId>
    <artifactId>gf-client</artifactId>
    <version>3.1</version>
    <type>pom</type>
    <scope>compile</scope>
    </dependency>

    这是 不是 稍作改动,如 gf-client全部 Glassfish 的 jars,这显然会产生很多 jars(希望有 a method 来优化 jar 号,尽管我们都知道过早优化)。

    因此,一旦完成,完全可以使用 EJB 远程接口(interface),但是 不是 JMS(由于无法理解的原因)。为了使 JMS 与 gf-client 一起工作,必须为 imqjmsra.jar 创建 maven 依赖项。和 imqbroker.jar , 均位于 %GLASSFISH3_INSTALL_DIR%/glassfish/lib/install/applications/jmsra .此外,如 imqjmsra.jar内部使用 imqbroker.jar ,我建议您创建以下 pom :
    <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.glassfish.external.jms</groupId>
    <artifactId>imqjmsra</artifactId>
    <version>3.1.0</version>
    <description>POM was created by Sonatype Nexus</description>
    <dependencies>
    <dependency>
    <groupId>org.glassfish.external.jms</groupId>
    <artifactId>imqbroker</artifactId>
    <version>3.1.0</version>
    </dependency>
    </dependencies>
    </project>

    关联到 imqjmsra.jar
    <?xml version="1.0" encoding="UTF-8"?>
    <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.glassfish.external.jms</groupId>
    <artifactId>imqbroker</artifactId>
    <version>3.1.0</version>
    <description>POM was created by Sonatype Nexus</description>
    </project>

    关联到 imqbroker.jar .

    显然,当我使用 Nexus 存储库管理时,我更容易使用 Nexus“上传 Artifact 页面”在我们公司的第 3 方本地存储库中创建这些依赖项。

    完成后,我的 POM 依赖项现在是
        <dependency>
    <groupId>org.glassfish.appclient</groupId>
    <artifactId>gf-client</artifactId>
    <version>3.1</version>
    <type>pom</type>
    <scope>compile</scope>
    </dependency>
    <dependency>
    <groupId>org.glassfish.external.jms</groupId>
    <artifactId>imqjmsra</artifactId>
    <version>3.1.0</version>
    </dependency>

    我可以完全轮询我的 JMS 队列。

    关于jakarta-ee - 我可以使用哪些 maven 依赖项为 Glassfish 创建独立的 JMS 客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5675024/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com