第4章 設定
本章では、AMQ JMS 実装を JMS アプリケーションにバインドし、設定オプションを設定するプロセスについて説明します。
JMS は Java Naming Directory Interface (JNDI) を使用して、API 実装およびその他のリソースを登録し、検索します。これにより、特定の実装に固有のコードを作成せずに JMS API にコードを作成できます。
設定オプションは、接続 URI でクエリーパラメーターとして公開されます。
4.1. JNDI 初期コンテキストの設定
JMS アプリケーションは InitialContextFactory
から取得した JNDI InitialContext
オブジェクトを使用して、接続ファクトリーなどの JMS オブジェクトを検索します。AMQ JMS は、org.apache.qpid.jms.jndi.JmsInitialContextFactory
クラスで InitialContextFactory
の実装を提供します。
InitialContextFactory
の実装は、InitialContext
オブジェクトがインスタンス化されると検出されます。
javax.naming.Context context = new javax.naming.InitialContext();
実装を見つけるには、お使いの環境で JNDI を設定する必要があります。これには、jndi.properties
ファイルの使用、システムプロパティーの使用、または初期コンテキスト API の使用の 3 つの方法があります。
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 プロパティーを設定できます。