JMS 接続ファクトリー
接続ファクトリーとは、JMS プロバイダー (IBM® MQ などのメッセージング・プロバイダー) との接続を作成するために JNDI クライアント (JMS API を使用する JMS プログラム) が使用するオブジェクトのことです。
IBM MQ エクスプローラーを使用すると、接続ファクトリーの作成、および接続ファクトリーが接続を作成するときに使用する接続パラメーターの定義ができます。
接続ファクトリーは、宛先と同様に管理対象オブジェクトであり、JNDI 名前空間に格納されます。JNDI 名前空間とは、ネーミングおよびディレクトリー・サービス内部の定義済みの場所のことです。初期コンテキストでは、JNDI 名前空間のルートを定義します。IBM MQ エクスプローラー では、次の図に示すように、すべての接続ファクトリーが適切なコンテキストおよびサブコンテキストの「接続ファクトリー」フォルダーに格納されます。
この図では、「接続ファクトリー 1」
という接続ファクトリーが、「ファイル・システム初期コンテキスト」
という初期コンテキストの「接続ファクトリー」フォルダーに格納されています。
接続ファクトリーを定義する場合は、JMS プロバイダーとして使用されるメッセージング・プロバイダー (IBM MQや Real-time など) を選択します。接続ファクトリーが接続を作成できるのは、このメッセージング・プロバイダーに対してのみです。別のメッセージング・プロバイダーへの接続を作成する JMS クライアントの場合は、新しい接続ファクトリーを作成して、そのメッセージング・プロバイダーを指定する必要があります。リアルタイム・トランスポートは IBM MQ 8.0 では使用できません。IBM MQ 8.0 を使用している場合には、リアルタイム・トランスポートは定義できますが、接続の作成を試みると失敗します。
ドメインに依存しない接続ファクトリー
メッセージング・ドメインには、Point-to-Point メッセージング・ドメインとパブリッシュ/サブスクライブ・メッセージング・ドメインの 2 種類があります。接続ファクトリーを作成すると、Point-to-Point メッセージング専用の接続 (QueueConnectionFactory インターフェースを使用) やパブリッシュ/サブスクライブ・メッセージング専用の接続 (TopicConnectionFactory インターフェースを使用) を作成できます。 JNDI からは、ドメインに依存しない接続ファクトリーも作成できるため、この接続ファクトリーを Point-to-Point メッセージングとパブリッシュ/サブスクライブ・メッセージングの両方に使用できます (ConnectionFactory インターフェースを使用)。詳しくは、接続ファクトリーの作成を参照してください。
JMS アプリケーションが Point-to-Point メッセージングまたはパブリッシュ/サブスクライブ・メッセージングの一方のみを使用する設計になっている場合は、接続ファクトリーの作成時やドメイン固有の接続ファクトリーが作成されるときに、特定のメッセージング・ドメインを選択できます。
ただし、同じトランザクション期間中に Point-to-Point とパブリッシュ/サブスクライブの両方の処理を実行する場合は、ドメインに依存しない接続ファクトリーを作成できます。 例えば、JMS アプリケーションを使用してトピックをサブスクライブ (パブリッシュ/サブスクライブ・メッセージング) し、次に JMS アプリケーションで特定のメッセージを受信したら、別のメッセージをキューに送信する (Point-to-Point メッセージング) ことなどができます。ドメインに固有の接続ファクトリーを使用する場合は、同じトランザクション期間中に Point-to-Point とパブリッシュ/サブスクライブの両方の処理を確実に実行するのは困難です。この場合は、メッセージング・ドメインごとに別個の接続ファクトリーを作成する必要があります。つまり、Point-to-Point 処理は QueueSession セッションによって制御されるトランザクション中に実行し、パブリッシュ/サブスクライブ処理は TopicSession セッションによって制御されるトランザクション中に実行します。送信アクションと受信アクションが両方とも実行されていることやバックアウトされていることを確認するのは困難です。
Point-to-Point 処理用のドメイン固有接続ファクトリーを 1 つと、パブリッシュ/サブスクライブ処理用のドメイン固有接続ファクトリーを 1 つ作成する代わりに、両方の処理用にドメインに依存しない接続ファクトリーを 1 つ作成することができます。これは、接続ファクトリーは 1 つの接続を作成しますが、その接続が作成するセッションも 1 つであるという意味です。 セッションはトピックから MessageConsumer を作成し、キューに対して MessageProducer を作成します。 パブリッシュされたメッセージを JMS アプリケーションが受信すると、同じセッションのトランザクションでは次のメッセージがキューに送信されます。いずれの操作も、1 回の作業単位としてコミットまたはロールバックできます。
詳しくは、IBM Knowledge Center 内のIBM MQ classes for JMS の使用を参照してください。