プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebLogic Server 12.1.3 JMSアプリケーションの開発
12c (12.1.3)
E56268-02
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

C 宛先のルックアップ方法

この章では、WebLogic Server 12.1.3のメッセージの宛先をルックアップするための、JNDIおよび宛先識別子の作成の使用方法について説明します。


注意:

JMSリソースの構成方法については、『Oracle WebLogic Server JMSリソースの管理』のJMSリソースの構成の理解に関する項を参照してください。

JNDI名の使用

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

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

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

Dest_name引数は、構成時に定義された宛先のJNDI名を指定します。「JNDI名の使用」「宛先のルックアップに使用する構文の例」を参照してください。

宛先識別子の作成の使用

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

public Queue createQueue(
 String queueName
) throws JMSException

public Topic createTopic(
 String topicName
) throws JMSException

queueNameおよびtopicName文字列の構文は、JMS仕様で定義されません。WebLogic JMSの構文については、次の項で説明します。


注意:

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

デフォルトのWebLogic CDI構文

JMSサーバー名、モジュール、および宛先構成名を含む文字列。「宛先のルックアップに使用する構文の例」を参照してください。

カスタムWebLogic CDI構文

デフォルトのCDI構文の他に、WebLogic JMSでは、宛先または共通分散宛先の追加の構成パラメータとしてJMSCreateDestinationIdentifierが提供されます。このパラメータでは、デフォルトのCDI構文と同じ値のキューまたはトピックが(1つ以上のモジュールで)複数定義されている場合、一意の参照名を構成できます。つまり、2つの異なるモジュール内に2つの異なる宛先があり、そのデフォルトのCDI名が同じ場合にこれらの宛先を区別する際に役立ちます。「宛先のルックアップに使用する構文の例」を参照してください。

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


注意:

この名前はJMSサーバーのスコープ内で一意でなければならないため、この名前と競合する宛先名が他のJMSモジュールに含まれている可能性があるかどうかを確認します。JMSサーバーをターゲットとする宛先名を解決するのは、デプロイヤの役目です。

宛先ルックアップ時のサーバー・アフィニティ

createTopic()およびcreateQueue()メソッドでは、「./Destination_Name」構文を使用して、宛先をルックアップする場合のサーバー・アフィニティを示すこともできます。これにより、JMS接続の接続ファクトリ・ホストと同じJVMにローカルにデプロイされた宛先の位置が指定されます。名前がローカルJVMにない場合は、同じ名前が別のJVMにデプロイされていても例外がスローされます。

アプリケーションでこの規約を利用すると、createTopic()メソッドおよびcreateQueue()メソッドを使用する場合にサーバー名をハード・コード化せずに済むので、コードを変更しなくても異なるJMSサーバーでコードを再利用できます。

宛先のルックアップに使用する構文の例

次の項では、宛先または分散宛先のメンバーの参照に使用する構文の例を示します。

非分散宛先

次の項では、通常の宛先(分散されない宛先)の参照に使用される構文の例を示します。

非分散宛先のJNDI構文

ほとんどのアプリケーションでは、CDIではなくJNDIを使用して宛先をルックアップします。次の項では、JNDIによる非分散宛先の参照に使用される構文の例を示します。

  • JNDI名を構成する場合は、以下のように定義されます。

    Dest_JNDI_Name

  • ローカルJNDI名を構成する場合、以下のように定義されます。

    Dest_Local_JNDI_Name


注意:

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

非分散宛先のCDI構文

この項では、CDIを使用したcreateQueueまたはcreateTopicで非分散宛先の参照に使用される構文の例を示します。

  • デフォルトのCDIを使用する場合、文字列は次のように定義されます。

    JMS_Server_Name/JMS_Module_Name!Destination_Name

  • 相互運用モジュールでデフォルトのCDIを使用する場合、文字列は次のように定義されます。

    JMS_Server_Name/interop-jms!Destination_Name

  • カスタムCDIを構成する場合、文字列は次のように定義されます。

    JMS_Server_Name/CDI_Name


注意:

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

WebLogic Server 9.0より前のリリースで宛先を参照する場合は、JMS_Server_Name!Destination_Name(例: myjmsserver!mydestination)で定義される文字列を使用してください。


共通分散宛先

次の項では、共通分散宛先(UDD)の参照に使用される構文の例を示します。

JNDI構文(UDDの場合)

ほとんどのアプリケーションでは、CDIではなくJNDIを使用して宛先をルックアップします。次の項では、JNDIを使用して各メンバーまたは論理UDDを参照する方法の例を示します。

  • 論理UDDの場合、文字列は次のように定義されます。

    udd-jndi-name

  • 個々のメンバーの論理UDDについては、文字列は次のように定義されます。

    jms-server-name@udd-jndi-name

UDDのCDI構文


注意:

ヘルパー・メソッドweblogic.jms.extensions.JMSModuleHelperクラスのuddMemberNameuddMemberJNDIName APIを使用すると、正しい構文でUDD CDI名を作成する際に役立ちます。

この項では、CDIを使用したcreateQueueまたはcreateTopicでUDDメンバーを参照する方法の例を示します。

  • CDIを構成しない場合の個々のメンバーについては、以下のように定義されます。

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

  • CDIを構成する場合の個々のメンバーについては、以下のように定義されます。

    jms-server-name/cdi-name

  • 論理UDDを参照する場合、module-name!udd-nameで定義される文字列を使用します。


注意:

jms-server-nameを「.」で置き換える場合、APIは、最初に論理上使用可能な/開始されるUDQのメンバーを返します。メンバーを現在ホストしている同じWebLogicサーバーでJMSクライアント接続がホストされる場合、メンバーはローカルで使用可能と見なされます。

重み設定された分散宛先


注意:

重み設定された分散宛先は、Weblogic Server 10.3.4.0では非推奨です。共通分散宛先を使用することをお薦めします。

重み設定された分散宛先は、個々に構成された通常の宛先のセットであり、それぞれに独自のJNDI名とCDI名があります。WDDの論理名は、セット全体を表し、JNDI名として構成されます。CDIを使用してWDDの論理にアクセスする方法はありません。

WDDのJNDI構文

次の項では、JNDIを使用して個々のメンバーまたは論理WDDを参照する方法の例を示します。

  • 論理WDDの場合、文字列は次のように定義されます。

    wdd-jndi-name

WDDのCDI構文

この項では、CDIを使用する場合と使用しない場合のcreateQueueまたはcreateTopicによるWDDメンバーの参照方法の例を示します。

  • createQueue()またはcreateTopic()を使用してWDD論理名にアクセスする方法はありません。論理WDDは、メンバーのJNDI名で定義される文字列を使用して常に参照される必要があります。非分散宛先の場合、かわりにサーバー・アフィニティ構文「.」を使用して各論理メンバーをルックアップする方法が便利な場合があります。