第 4 章 Configuration
本章介绍了将 AMQ JMS 实施绑定到您的 JMS 应用并设置配置选项的流程。
JMS 使用 Java 命名目录接口(JNDI)来注册和查找 API 实施和其他资源。这可让您编写代码到 JMS API,而不将它与特定的实施关联。
配置选项作为连接 URI 上的查询参数公开。
4.1. 配置 JNDI 初始上下文
JMS 应用使用从 InitialContextFactory
获取的 JNDI InitialContext
对象来查找 JMS 对象,如连接工厂。AMQ JMS 在 org.apache.qpid.jms.jndi.JmsInitialContextFactory
类中提供 InitialContextFactory
实施。
当 InitialContext
对象被实例化时,InitialContextFactory
实现会被发现:
javax.naming.Context context = new javax.naming.InitialContext();
要查找实施,必须在您的环境中配置 JNDI。实现这一目标的方法有三种:使用 jndi.properties
文件、使用系统属性或使用初始上下文 API。
使用 jndi.properties 文件
创建名为 jndi.properties
的文件,并将其放置在 Java 类路径中。使用键 java.naming.factory.initial
添加属性。
示例:使用 jndi.properties 文件设置 JNDI 初始上下文工厂
java.naming.factory.initial = org.apache.qpid.jms.jndi.JmsInitialContextFactory
在基于 Maven 的项目中,jndi.properties
文件放置在 <project-dir>/src/main/resources
目录中。
使用系统属性
设置 java.naming.factory.initial
系统属性。
示例:使用系统属性设置 JNDI 初始上下文工厂
$ java -Djava.naming.factory.initial=org.apache.qpid.jms.jndi.JmsInitialContextFactory ...
使用初始上下文 API
使用 JNDI 初始上下文 API 以编程方式设置属性。
示例:以编程方式设置 JNDI 属性
Hashtable<Object, Object> env = new Hashtable<>(); env.put("java.naming.factory.initial", "org.apache.qpid.jms.jndi.JmsInitialContextFactory"); InitialContext context = new InitialContext(env);
请注意,您可以使用同一 API 为连接工厂、队列和主题设置 JNDI 属性。