ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server JMS プログラマーズ ガイド
11g リリース 1 (10.3.1)
B55536-01
 

目次
目次

戻る
戻る
 
 

C 送り先のルックアップ方法

以下の節では、送り先をルックアップする方法について説明します。

JNDI 名の使用

送り先または分散送り先のメンバーをルックアップするには、JNDI を使用することをお勧めします。送り先は、JNDI コンテキスト (context) を確立して、PTP または pub/sub メッセージングでそれぞれ次のようなコマンドを実行を実行することでルックアップできます。

Queue queue = (Queue) context.lookup(Dest_name);

Topic topic = (Topic) context.lookup(Dest_name);

Dest_name 引数には、コンフィグレーション時に定義された送り先の JNDI 名を指定します。「手順 1 : JNDI で接続ファクトリをルックアップする」を参照してください。

参照の使用

送り先または分散送り先のメンバーをルックアップする方法としてはあまり一般的ではありませんが、JNDI を使用しない方法として、次のような QueueSession または TopicSession のいずれかのメソッドを使用して、それぞれキューまたはトピックを参照する方法があります。


注意 :

createQueue() メソッドと createTopic() メソッドでは送り先が動的には作成されず、すでに存在する送り先への参照が作成されるだけです。送り先の動的な作成については、「JMS モジュール ヘルパーを使用したアプリケーションの管理」を参照してください。

queueName または topicName 文字列の値は、以下で定義されます。

送り先を定義したら、以下の Queue メソッドまたは Topic メソッドを使用してキューまたはトピックにそれぞれアクセスできます。

public String getQueueName(
) throws JMSException

public String getTopicName(
) throws JMSException

キュー名とトピック名が印刷可能なフォーマットで返されるようにするには、toString() メソッドを使用します。

[送り先識別子を作成] の使用

[送り先識別子を作成] (CDI) は、JNDI を使用せずに標準 JMS javax.jms.SessioncreateQueue または createTopic API. を使用して送り先をルックアップする方法を提供する送り先または分散送り先のメンバーの参照名です。

この名前は、この送り先の対象となる JMS サーバのスコープ内でユニークである必要があります。ただし、JMS モジュール全体のスコープ内でユニークである必要はありません。たとえば、2 つのキューは、それぞれ異なる JMS サーバを対象にする限り、同じ CDI 名を持つことができます。


注意 :

この名前は JMS サーバのスコープ内でユニークでなければならないため、この名前と衝突する送り先名が他の JMS モジュールに含まれている可能性があるかどうかを確認します。JMS サーバを対象とする送り先名を解決するのは、デプロイヤの役目です。

送り先のルックアップ方法の例

以下の節では、送り先または分散送り先のメンバーを参照する方法の例を示します。

送り先

以下の節では、送り先を参照する方法の例を示します。

createQueue および createTopic の構文 (送り先の場合)

この節では、createQueue または createTopic を使用して、CDI を使用する場合と使用しない場合について送り先を参照する方法の例を示します。

  • CDI をコンフィグレーションしない場合は、以下のように定義されます。

    JMS_Server_Name/JMS_Module_Name!Destination_Name

  • CDI をコンフィグレーションする場合は、以下のように定義されます。

    JMS_Server_Name/CDI_Name


注意 :

(JMS_Server_Name を「.」に置き換えて) サーバ アフィニティを使用する場合は、検索がクラスタ全体ではなく JMS 接続ホストに制限されます。

JNDI 構文 (送り先の場合)

以下の節では、JNDI を使用して送り先を参照する方法の例を示します。

  • JNDI 名をコンフィグレーションする場合は、以下のように定義されます。

    Dest_JNDI_Name

  • ローカル JNDI 名をコンフィグレーションする場合、以下のように定義されます。

    Dest_Local_JNDI_Name


注意 :

ローカル JNDI 名は、JNDI コンテキスト ホストが送り先と同じサーバ上に存在する場合にのみ機能します。JNDI コンテキスト ホストは、接続ホストと同じであるとは限りません。

共通分散送り先

以下の節では、共通分散送り先 (UDD) を参照する方法の例を示します。

createQueue および createTopic Syntax の構文 (UDD の場合)

この節では、createQueue または createTopic を使用して、CDI を使用する場合と使用しない場合について UDD メンバーまたは論理 UDD を参照する方法の例を示します。

  • CDI をコンフィグレーションしない場合の個々のメンバーについては、以下のように定義されます。

    jms-server-name)/module-name!jms-server-name@udd-name

  • CDI をコンフィグレーションする場合の個々のメンバーについては、以下のように定義されます。

    jms-server-name)/cdi-name


注意 :

CDI で jms-server-name を「.」に置き換えると、API は最初にローカルで使用できる/開始される UDQ メンバーを返します。

JNDI 構文 (UDD の場合)

以下の節では、JNDI を使用して個々のメンバーを参照する方法の例を示します。

  • JNDI 名をコンフィグレーションする場合は、以下のように定義されます。

    dest-jndi-name

  • ローカル JNDI 名をコンフィグレーションする場合は、以下のように定義されます。

    dest-local-jndi-name


注意 :

ローカル JNDI 名は、JNDI コンテキスト ホストが送り先と同じサーバ上に存在する場合にのみ機能します。JNDI コンテキスト ホストは、接続ホストと同じであるとは限りません。

論理 UDD の参照

論理 UDD を参照する場合は、CDI をコンフィグレーションするかしないかに関係なく、module-name!udd-name で定義されます。

重み設定された分散送り先

重み設定された分散送り先 (WDD) は、スキーマで destination-type を拡張しないため、CDI パラメータを指定できません。CDI を使用するには、各メンバー送り先で CDI を指定する必要があります。