第 4 章 Configuration
本章论述了将 AMQ JMS 实现绑定到 JMS 应用并设置配置选项的过程。
JMS 使用 Java 命名目录接口(JNDI)注册和查找 API 实施和其他资源。这可让您将代码写入 JMS API,而无需将其写入特定的实现。
配置选项作为连接 URI 上的查询参数公开。
4.1. 配置 JNDI 初始上下文 复制链接链接已复制到粘贴板!
JMS 应用使用
获取的 JNDI InitialContext 对象来查找 JMS 对象,如连接工厂。AMQ JMS 在 InitialContext
Factoryorg.apache.qpid.jms.jndi.JmsInitialContextFactory
类中提供了 InitialContextFactory
的实施。
当 InitialContext
对象实例化时,会发现 InitialContextFactory
实现:
javax.naming.Context context = new javax.naming.InitialContext();
javax.naming.Context context = new javax.naming.InitialContext();
若要查找实施,环境中必须配置 JNDI。实现这一点的方法有三种:使用 jndi.properties
文件、使用系统属性或使用初始上下文 API。
使用 jndi.properties 文件
创建名为 jndi.properties
的文件,并将其放在 Java classpath 中。使用键 java.naming.factory.initial
添加属性。
示例:使用 jndi.properties 文件设置 JNDI 初始上下文工厂
java.naming.factory.initial = org.apache.qpid.jms.jndi.JmsInitialContextFactory
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 ...
$ 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);
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 属性。