8.4.3 ラウンドロビン検索をするために必要な設定
ラウンドロビン検索をするために必要な設定とグループ名の命名規則などについて説明します。
ラウンドロビン検索をする場合,次の設定が必要です。
- ラウンドロビン検索の対象になる論理ネーミングサービスのグループ
- 各グループに属するCORBAネーミングサービスのルート位置
- InitialContextFactoryの実装を委譲しているクラス
ラウンドロビン検索機能を使用するためには,システムプロパティに設定します。なお,InitialContextFactoryの実装を委譲しているクラスについては,システムプロパティの設定に加えて,各アプリケーションのInitialContext生成時に引数で指定することもできます。また,InitialContext生成時の引数では,システムプロパティに指定した論理ネーミングサービスのグループのうち,特定のネーミングサービスを選択して指定することもできます。
なお,システムプロパティだけで設定している場合は,特定のグループを指定したラウンドロビン検索はできません。論理ネーミングサービス上にある全グループのネーミングサービスが検索の対象となります。
ここでは,それぞれの設定方法の概要について説明します。
- <この項の構成>
- (1) システムプロパティの設定によるグループとグループに属するCORBAネーミングサービスのルート位置の特定
- (2) InitialContext生成時の引数指定による検索対象グループの選択
- (3) グループ名の命名規則
- (4) 推奨する設定
(1) システムプロパティの設定によるグループとグループに属するCORBAネーミングサービスのルート位置の特定
ラウンドロビン検索を実行する場合,システムプロパティに,ラウンドロビン検索の対象になる論理ネーミングサービスのグループと,グループに属するネーミングサービスのルート位置を指定します。また,InitialContextFactoryの実装を委譲しているクラスとして,java.naming.factory.initial=com.hitachi.software.ejb.jndi.GroupContextFactoryを指定する必要があります。
システムプロパティは,ラウンドロビン検索機能を利用するアプリケーションの種類ごとに,次の個所に設定します。
- J2EEサーバで動作するJ2EEアプリケーション(Enterprise Beanまたはサーブレット),またはWebコンテナサーバで動作するWebアプリケーション(サーブレット)の場合
J2EEサーバまたはWebコンテナサーバのプロパティをカスタマイズして設定します。設定方法については,マニュアル「Cosminexus システム構築ガイド」の次の説明を参照してください。
- J2EEサーバの動作設定のカスタマイズ
- Webコンテナサーバの動作設定のカスタマイズ
- J2EEサーバ,Webコンテナサーバ以外で動作するEJBクライアントアプリケーションの場合
次のどちらかの方法で設定します。
- EJBクライアントアプリケーション起動時にプロパティとして設定します。EJBクライアントアプリケーションのプロパティの設定については,マニュアル「Cosminexus システム構築ガイド」を参照してください。
- System.setPropertyメソッドを使用してアプリケーション内で設定します。
指定例を次に示します。この例は,プロパティをusrconf.propertiesで指定する場合の指定例です。なお,それぞれのキーの詳細については,マニュアル「Cosminexus リファレンス 定義編」を参照してください。
# 論理ネーミングサービスの構成を定義
ejbserver.jndi.namingservice.group.list=g1;g2;g3
ejbserver.jndi.namingservice.group.g1.providerurls=corbaname::hostA:900;corbaname::hostB:900
ejbserver.jndi.namingservice.group.g2.providerurls=corbaname::hostD:700;corbaname::hostE:700
ejbserver.jndi.namingservice.group.g3.providerurls=corbaname::hostF:800;corbaname::hostG:800
# InitialContextFactoryの実装を委譲するクラスを指定
java.naming.factory.initial=com.hitachi.software.ejb.jndi.GroupContextFactory
: |
指定例の中のejbserver.jndi.namingservice.group.listキー,ejbserver.jndi.namingservice.group.<Specify group name>.providerurlsキー,およびjava.naming.factory.initialキーには,それぞれ次の内容を指定します。
- ejbserver.jndi.namingservice.group.listキー
- ラウンドロビン検索をする場合に,検索対象になる論理ネーミングサービスのグループを定義します。指定する各グループ名は,論理ネーミング内で一意に識別できる名称にします。
- ejbserver.jndi.namingservice.group.<Specify group name>.providerurlsキー
- 各グループに属するネーミングサービスのルート位置をプロバイダURLで指定します。<Specify group name>には,ejbserver.jndi.namingservice.group.list内に指定したグループ名を指定します。
- java.naming.factory.initialキー
- InitialContextFactoryの実装を委譲しているクラスを指定します。
- java.naming.factory.initialキーに,"com.hitachi.software.ejb.jndi.GroupContextFactory"を指定した場合,ラウンドロビン検索が実施されます。指定しなかった場合,J2EEサーバがネーミングサービスとして利用するCORBAネーミングサービスが検索の対象になります。
- なお,「(2) InitialContext生成時の引数指定による検索対象グループの選択」に示す方法でInitialContext生成時の引数にjava.naming.factory.initialキーを設定する場合,システムプロパティでこのキーに値を指定する必要はありません。
(2) InitialContext生成時の引数指定による検索対象グループの選択
ラウンドロビン検索を実行する設定になっている場合に,クライアントアプリケーション内でInitialContext生成時の引数に特定のグループを指定することによって,ラウンドロビン対象でのルックアップ対象になるグループを選択できます。なお,InitialContext生成時の引数の指定は任意です。
指定例を次に示します。
:
Hashtable env = new Hashtable();
env.put("ejbserver.jndi.namingservice.groupname", "g1");
env.put("java.naming.factory.initial",
"com.hitachi.software.ejb.jndi.GroupContextFactory");
InitialContext ic = new InitialContext(env);
: |
指定例の中のejbserver.jndi.namingservice.groupnameキーおよびjava.naming.factory.initialキーには,それぞれ次の内容を指定します。
- ejbserver.jndi.namingservice.groupnameキー
- 検索対象となるグループ名を「gl」部分に指定します。グループ名は,システムプロパティ(usrconf.propertiesのejbserver.jndi.namingservice.group.listキー)で,すでに定義されているものを指定してください。なお,ejbserver.jndi.namingservice.groupnameキーにデフォルト値はありません。指定しなかった場合,システムプロパティで設定した,すべてのグループを検索の対象とします。
- java.naming.factory.initialキー
- InitialContextFactoryの実装を委譲しているクラスを指定します。java.naming.factory.initialキーに,"com.hitachi.software.ejb.jndi.GroupContextFactory"を指定した場合,ラウンドロビン検索が実施されます。システムプロパティのjava.naming.factory.initialキーの指定を省略した場合に,引数でこのキーの指定を省略すると,ejbserver.jndi.namingservice.groupnameキーで指定したグループの検索は実施されないで,J2EEサーバがネーミングサービスとして利用するCORBAネーミングサービスが検索の対象になります。
(3) グループ名の命名規則
グループ名に使用できる文字を次に示します。
- 英数字(A~Z,a~z,0~9)
- アンダースコア(_)
なお,グループ名は,論理ネーミングサービス内で一意となる名称にしてください。
(4) 推奨する設定
ラウンドロビン検索機能を使用するときには,CORBAネーミングサービスの監視機能が持つ,無効なキャッシュ領域を定期的にクリアする機能を利用することを推奨します。クライアントのシステムプロパティ設定例を次に示します。
- クライアントのシステムプロパティ設定例
:
# キャッシュの設定
ejbserver.jndi.cache=on
ejbserver.jndi.cache.interval=60
ejbserver.jndi.cache.interval.clear.option=check
# 論理ネーミングサービスの構成を定義
ejbserver.jndi.namingservice.group.list=g1;g2;g3
ejbserver.jndi.namingservice.group.g1.providerurls= corbaname::hostA:900;corbaname::hostB:900;corbaname::hostC:900
ejbserver.jndi.namingservice.group.g2.providerurls=
corbaname::hostD:700;corbaname::hostE:700
ejbserver.jndi.namingservice.group.g3.providerurls=
corbaname::hostF:800;corbaname::hostG:800;corbaname::hostH:800
: |