第 15 章 与 Apache ActiveMQ 集成


概述

如果您将 Apache ActiveMQ 用作 JMS 提供程序,则以特殊格式指定您的目的地的 JNDI 名称,可以动态为队列或主题创建 JNDI 绑定。这意味着 不需要使用 您的队列或主题的 JNDI 绑定来配置 JMS 供应商。

初始上下文工厂

将 Apache ActiveMQ 与 JNDI 集成的关键在于 ActiveMQInitialContextFactory 类。此类用于创建 JNDI InitialContext 实例,然后使用它访问 JMS 代理中的 JMS 目的地。

例 15.1 “SOAP/JMS WSDL 以连接到 Apache ActiveMQ” 显示 SOAP/JMS WSDL 扩展,以创建与 Apache ActiveMQ 集成的 JNDI InitialContext

例 15.1. SOAP/JMS WSDL 以连接到 Apache ActiveMQ

<soapjms:jndiInitialContextFactory>
  org.apache.activemq.jndi.ActiveMQInitialContextFactory
</soapjms:jndiInitialContextFactory>
<soapjms:jndiURL>tcp://localhost:61616</soapjms:jndiURL>
Copy to Clipboard Toggle word wrap

例 15.1 “SOAP/JMS WSDL 以连接到 Apache ActiveMQ” 中,Apache ActiveMQ 客户端连接到位于 tcp://localhost:61616 的代理端口。

查找连接工厂

除了创建 JNDI InitialContext 实例外,您必须指定绑定到 javax.jms.ConnectionFactory 实例的 JNDI 名称。对于 Apache ActiveMQ,InitialContext 实例中有一个预定义绑定,它会将 JNDI 名称 ConnectionFactory 映射到 ActiveMQConnectionFactory 实例。例 15.2 “用于指定 Apache ActiveMQ 连接工厂的 SOAP/JMS WSDL” 控制 SOAP/JMS 扩展元素,用于指定 Apache ActiveMQ 连接工厂。

例 15.2. 用于指定 Apache ActiveMQ 连接工厂的 SOAP/JMS WSDL

<soapjms:jndiConnectionFactoryName>
  ConnectionFactory
</soapjms:jndiConnectionFactoryName>
Copy to Clipboard Toggle word wrap

动态目的地的语法

要动态访问队列或主题,请使用以下格式将目的地的 JNDI 名称指定为 JNDI 复合名称:

dynamicQueues/QueueName
dynamicTopics/TopicName
Copy to Clipboard Toggle word wrap

QueueNameTopicName 是 Apache ActiveMQ 代理使用的名称。它们没有 抽象 JNDI 名称。

例 15.3 “带有动态创建队列的 WSDL 端口规格” 显示使用动态创建队列的 WSDL 端口。

例 15.3. 带有动态创建队列的 WSDL 端口规格

<service name="JMSService">
  <port binding="tns:GreeterBinding" name="JMSPort">
    <jms:address jndiConnectionFactoryName="ConnectionFactory"
                 jndiDestinationName="dynamicQueues/greeter.request.queue" >
      <jms:JMSNamingProperty name="java.naming.factory.initial"
                             value="org.activemq.jndi.ActiveMQInitialContextFactory" />
      <jms:JMSNamingProperty name="java.naming.provider.url"
                             value="tcp://localhost:61616" />
    </jms:address>
  </port>
</service>
Copy to Clipboard Toggle word wrap

当应用尝试打开 JMS 连接时,Apache ActiveMQ 将检查是否存在 JNDI 名称为 greeter.request.queue 的队列。如果不存在,它将创建一个新的队列,并将其绑定到 JNDI 名称 greeter.request.queue

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat