Oracle® Fusion Middleware Oracle WebLogic Server JMSのプログラミング 11g リリース1 (10.3.5) B61629-03 |
|
前 |
次 |
この項では、宛先をルックアップする方法について説明します。宛先の作成方法については説明しません。JMSリソースの構成方法については、『Oracle WebLogic Server JMSの構成と管理』の「JMSリソース構成について」を参照してください。
宛先のタイプをルックアップするには、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モジュール・ヘルパーを使用したアプリケーションの管理」を参照してください。 |
JMSサーバー名、モジュール、および宛先構成名を含む文字列。「宛先のルックアップに使用する構文の例」を参照してください。
デフォルトの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()
メソッドを使用する場合にサーバー名をハード・コード化せずに済むので、コードを変更しなくても別のJVMでコードを再利用できます。
次の項では、宛先または分散宛先のメンバーの参照に使用する構文の例を示します。
次の項では、通常の宛先(分散されない宛先)の参照に使用される構文の例を示します。
ほとんどのアプリケーションでは、CDIではなくJNDIを使用して宛先をルックアップします。次の項では、JNDIによる非分散宛先の参照に使用される構文の例を示します。
JNDI名を構成する場合は、以下のように定義されます。
Dest_JNDI_Name
ローカルJNDI名を構成する場合、以下のように定義されます。
Dest_Local_JNDI_Name
注意: ローカルJNDI名は、JNDIコンテキスト・ホストが非分散宛先と同じサーバー上に存在する場合にのみ機能します。JNDIコンテキスト・ホストは、JMS接続ホストと同じであるとは限りません。 |
この項では、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より前のリリースで宛先を参照する場合は、 |
次の項では、共通分散宛先(UDD)の参照に使用される構文の例を示します。
ほとんどのアプリケーションでは、CDIではなくJNDIを使用して宛先をルックアップします。次の項では、JNDIを使用して各メンバーまたは論理UDDを参照する方法の例を示します。
論理UDDの場合、文字列は次のように定義されます。
udd-jndi-name
個々のメンバーの論理UDDについては、文字列は次のように定義されます。
jms-server-name@udd-jndi-name
注意: ヘルパー・メソッドweblogic.jms.extensions.JMSModuleHelper クラスのuddMemberName とuddMemberJNDIName 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の論理にアクセスする方法はありません。
次の項では、JNDIを使用して個々のメンバーまたは論理WDDを参照する方法の例を示します。
論理WDDの場合、文字列は次のように定義されます。
wdd-jndi-name
個々のメンバーの論理WDDについては、「非分散宛先のJNDI構文」を参照してください。
この項では、CDIを使用する場合と使用しない場合のcreateQueue
またはcreateTopic
によるWDDメンバーの参照方法の例を示します。
createQueue()
またはcreateTopic()
を使用してWDD論理名にアクセスする方法はありません。論理WDDは、メンバーのJNDI名で定義される文字列を使用して常に参照される必要があります。非分散宛先の場合、かわりにサーバー・アフィニティ構文「.」を使用して各論理メンバーをルックアップする方法が便利な場合があります。
CDIをメンバーで構成する場合の個々のメンバーについては、「非分散宛先のCDI構文」を参照してください。