adminobject
要素の構成について説明します。
管理対象オブジェクトのコンテキスト・オブジェクトは、自動宛先ラッピングを動的に使用してキューとトピックをルックアップするために使用されます。これは、自動宛先ラッピングの使用に説明されています。
自動宛先ラッピングを使用すると、アプリケーションはWebLogic JNDIコンテキストを表すアプリケーション・サーバーのJNDIツリーに管理対象オブジェクトをバインドできます。次に、アプリケーションは、このWebLogic JNDIコンテキストをルックアップし、JMS宛先の名前で、WebLogic JNDIツリー内をルックアップできます。これにより、アプリケーション・サーバー内で1つの管理対象オブジェクトのみを構成すればよくなるので、大量の宛先を持つアプリケーションの構成が簡略化されます。
次の要素を使用して、管理対象オブジェクトのコンテキスト・オブジェクトを定義します。
<adminobject-interface>
: weblogic.jms.ra.WLDestinationContextInterface
を使用します。
<adminobject-class>
: weblogic.jms.ra.WLDestinationContext
を使用します。
<config-property>
要素内で、次の構成プロパティを使用します。
group
: このadminobject
定義に関連付けされるグループの名前です。
rpContextLocation
: 管理対象オブジェクトのコンテキスト・オブジェクトを使用して、JMS宛先をルックアップする方法を記述しているリソース・アダプタに情報を提供します。これは次の構文を使用して指定します。
connector:<
connectorName
>/
groupDefinition
内で定義されているマクロが、このプロパティ値のコネクタの値に使用される場合があります。たとえば、グループ内のマクロ{connectorName}
の値がwlDevelopmentである場合、connector:wlDevelopment/
のかわりに、connector:{connectorName}/
を使用できます。詳細は、リソース・プロバイダの高度な構成方法を参照してください。
自動宛先ラッピングを使用すると、管理対象オブジェクトはプロバイダの宛先を自動的にラップでき、管理対象オブジェクトをプロバイダの宛先ごとに作成する必要がなくなり、管理対象オブジェクトを宛先のJNDIに明示的にバインドします。1つの管理対象オブジェクトがリソース・プロバイダごとに定義されるので、JNDIのURLを動的に構築して、このコンテキスト内の各宛先をアクセスできます。
アプリケーションは、JNDIにバインドされているJMSリソース・アダプタの管理対象オブジェクトをルックアップします。これらの管理対象オブジェクトはJMS宛先または宛先コンテキストを表す場合があります。JMS宛先として使用する場合は、JMS宛先ごとに1つの管理対象オブジェクトを定義する必要があります。アプリケーションが20個のJMS宛先を使用している場合には、個別の管理対象オブジェクトを20個(各宛先に1つ)作成する必要があります。また、アプリケーションは、これらの20個のJMS宛先を定義して、それらのJava EEディスクリプタにresource-env-references
としてマップする必要があります。
宛先コンテキスト管理対象オブジェクトを使用すると、単一の宛先コンテキストを統合でき、これがJMSプロバイダとして機能するWebLogic Serverインスタンスで任意の数のJMS宛先をルックアップするために使用されます。アプリケーションが宛先コンテキストに対して定義する必要があるresource-env-ref
マッピングは1つのみです。アプリケーションは、宛先コンテキストをルックアップして、宛先にリモートのWebLogic JNDI名を追加します。
自動宛先ラッピングにより、次のような場合に構成が簡略化されます。
デプロイメント時に、WebLogic Server JMS宛先を決めることができない。たとえば、JMSリソース・アダプタが、実行時にユーザーからソース宛先とターゲット宛先のみを入手している場合。
アプリケーションが大量の宛先をアクセスする必要がある。これにより、リソース・プロバイダのすべての宛先に、JMSリソース・アダプタ宛先の一致セットを構成する必要がなくなります。そうでない場合、アプリケーションで使用される前に、各リソース・プロバイダの宛先は構成済の管理対象オブジェクトにマッピングする必要があります。
たとえば、WebLogic JMSサーバーを表す管理対象オブジェクトは、外部のアプリケーション・サーバーでJNDI名myContext
にバインドされます。JNDI名がjms/bar
のWebLogic JMS宛先がこのWebLogic Server JNDIツリー内に構成されている場合、自動宛先ラッピングは外部サーバーのJNDIルックアップ内のmyContext/jms/bar
を使用します。
次に、キューの自動ラッピングの例を示します。
. . .
<adminobject-config location="myContext">
<adminobject-class>weblogic.jms.ra.WLDestinationContext</adminobject-class>
<config-property name="group" value="wls"/>
<config-property name="rpContextLocation" value="connector:{rp_name
}/"/>
</adminobject-config>
. . .
前の例で、rp_name
はra.xml
ファイルで定義されているリソース・プロバイダの名前です。詳細は、管理対象オブジェクト構成のプロパティを参照してください。
アプリケーション内で、javax.naming.Context
としてmyContext
をルックアップします。
. . .
@Resource(mappedName="myContext")
private javax.naming.Context wljmsraContext;
. . .
これで、次のコンテキストを使用してキュー宛先をルックアップできます。
. . .
Queue theMdbQueue = (Queue) wlraContext.lookup("com.oracle.jms.qa.myQ1");
. . .
次のタイプの管理対象オブジェクトをJMSキューおよびトピック用に作成できます。
キューの場合、<adminobject-class>
オブジェクトのインスタンス: oracle.j2ee.ra.jms.generic.WLQueueAdmin
トピックの場合、<adminobject-class>
オブジェクトのインスタンス: oracle.j2ee.ra.jms.generic.WLTopicAdmin
次の管理対象オブジェクト・スタンザを作成できます。
. . . <!-- Context admin object --> <adminobject> <adminobject-interface>weblogic.jms.ra.WLDestinationContextInterface</adminobject-interface> <adminobject-class>weblogic.jms.ra.WLDestinationContext</adminobject-class> <config-property> <config-property-name>group</config-property-name> <config-property-type>java.lang.String</config-property-type> <config-property-value></config-property-value> </config-property> <config-property> <config-property-name>rpContextLocation</config-property-name> <config-property-type>java.lang.String</config-property-type> <config-property-value></config-property-value> </config-property> <adminobject> <!-- Queue admin object --> <adminobject> <adminobject-interface>weblogic.jms.ra.WLQueueAdminInterface</adminobject-interface> <adminobject-class>weblogic.jms.ra.WLQueueAdmin</adminobject-class> <config-property> <config-property-name>group</config-property-name> <config-property-type>java.lang.String</config-property-type> <config-property-value></config-property-value> </config-property> <<config-property> <config-property-name>rpResourceLocation</config-property-name> <config-property-type>java.lang.String</config-property-type> <config-property-value></config-property-value> </config-property> </adminobject> <!-- Topic admin object --> <adminobject> <adminobject-interface>weblogic.jms.ra.WLTopicAdminInterface</adminobject-interface> <adminobject-class>weblogic.jms.ra.WLTopicAdmin</adminobject-class> <config-property> <config-property-name>group</config-property-name> <config-property-type>java.lang.String</config-property-type> <config-property-value></config-property-value> </config-property> <config-property> <config-property-name>rpResourceLocation</config-property-name> <config-property-type>java.lang.String</config-property-type> <config-property-value></config-property-value> </config-property> </adminobject> . . .