6. JNDIサービス

JNDIサービスに関する設定について説明します。

6.1. JNDI設定項目・設定方法

JNDIサービスの設定項目については全てMO化されています。項目の設定方法については「各サービスの属性」を参照してください。

6.2. JNDIサービス設定項目一覧

以下はMOで設定可能なJNDIサービス設定項目一覧です。

Dottedname : server.jndi-service

MOで設定可能なJNDIサービス設定項目一覧
属性名
(attribute-name)
説明 既定値
bind-to-nameservice JNDIサーバのリファレンスをCosNamingサーバに登録するかどうかを指定します。
プロバイダURLとしてcorbaname形式を指定する場合はtrueにする必要があります。
false(Express の場合)
true(Standard 以上の場合)
persistent-backupinterval 名前情報の永続化を行う場合、何回名前情報が更新されたら永続化ファイルをバックアップするかを指定します。1の場合名前情報が更新されるたびにバックアップを行ないます。 1
persistent-maxsize 名前情報の永続化を行う場合に永続化ファイルの最大サイズ(Kbyte)を指定します。 0
persistent-storedir 名前情報をファイルに永続化する場合、永続化ファイルの格納先のディレクトリ名を指定します。 ${INSTANCE_ROOT}/
config/jndisp/store
persistent-storedir-backup 名前情報をファイルに永続化する場合、バックアップ先のディレクトリ名を指定します。 ${INSTANCE_ROOT}/
config/jndisp/store
remote 他のプロセスからJNDIにアクセスできるかどうかを指定します。HTTPセッションレプリケーション機能、リモートインタフェースを持つEJB、またはJMSを使用する場合、リモートアクセス可能である必要があります。リモートアクセス可能の場合、Object Brokerのサービス起動が必須となります。 true
server-name JNDIサーバをレプリケーションする場合、それぞれのJNDIサーバを識別するための名前を指定します。指定がない場合は 「ローカルホスト名:ドメイン名」 が使用されます。
ドメインが正常に停止できなかった後でこの値が変わるとJNDIサーバの動作が不正になる場合があります。
JNDIサーバが動作するホストが仮想ホスト名を持ち、その仮想ホスト名が変わる場合、この値を他のドメインと重ならない任意の固定文字列に設定してください。
null
startup-cosnaming-retry-interval 起動時にCosNamingサーバとの通信リトライを行う間隔(秒)を指定します。 1
url 連携するCosNamingサーバのURLのリストをカンマで区切って指定します。

例 corbaname://host1,corbaname://host2
null
strictly-synchronization サーバ上で動作するアプリケーション(Webアプリケーション、EJBアプリケーション)のJNDIアクセスを「厳密な同期処理モード」にします。 false
startup-cosnaming-wait-timeout JNDIサーバが起動時に行うCosNamingサービスへのオブジェクトリファレンスの登録処理の最大の待ち合わせ時間を秒で設定します。 設定されていない場合は既定値の120秒になります。 120
emptize-exception-stack-trace trueのとき、JNDIサーバはスタックトレースを空にしてから例外をスローします。 true
unbind-and-destroy-as-spec trueのとき、unbindおよびdestroySubcontextメソッドがJNDI仕様どおり冪等になります。 false

6.3. JNDIサーバの通信リスナの設定

JNDIサービスはEJBと同じく、RMI-IIOPを使用して通信を行ないます。 このため通信用ポートなどの設定は組み込みIIOPリスナの設定で行ないます。組み込みIIOPリスナについてはEJBコンテナの設定方法を参照してください。

6.4. JNDIサーバをレプリケーションするための設定

HTTPセッション情報のみをレプリケーションする場合は以下の手順は必要ありません。代わりにWebコンテナのsession-replication-jndi-url属性で設定します。詳しくは、「HTTPのみのセッションレプリケーション」を参照してください。

JNDIサーバの名前情報全体を複数ドメイン間でレプリケーションするためには、それぞれのドメインで同じCosNamingサーバと連携するように設定します。あらかじめJNDIサーバのbind-to-nameservice属性をtrueに設定しておく必要があります。

CosNamingサーバと連携する場合

それぞれのドメインのURLの設定でレプリケーションするドメインのCosNamingサーバのURLを列挙します。列挙したCosNamingサーバは、その順序に関係なく、レプリケーション対象として対等に扱われます。

例えばserver1のport1のCosNamingサーバの動作するドメインとserver2のport2のCosNamingサーバの動作するドメイン間でレプリケーションする場合、両方のドメインのurlの設定値を以下のように設定します。

corbaname://server:port1,corbaname://server:port2

レプリケーションを行うと、JNDIサーバへのバインドなどの名前を更新する処理は上記のCosNamingサーバのURLに登録されている全てのJNDIサーバに対して行われます。 あるドメインのJNDIサーバを後から起動した場合でも、他の動作中のJNDIサーバから登録情報を取得して自身の登録情報にマージします。 レプリケーション対象のJNDIサーバのリストはObject BrokerのCosNamingサーバに登録されますが、ドメインを停止するとCosNamingサーバ上のリストがクリアされます。 そのためJNDIサーバをレプリケーションしている環境で、あるドメインを起動したまま別のレプリケーション対象のドメインを再起動した場合、 再起動したドメインのCosNamingサーバに対して停止しなかったドメインのJNDIサーバを再登録する必要があります。

JNDIサーバの再登録および登録解除は、統合運用管理ツールのJNDIサービスで行います。運用管理コマンドを使用する場合は以下のように行います。 この操作を行っても、JNDIサーバの名前情報に影響はありません。

otxadmin>invoke server.jndi-service.bindRemoteReference
otxadmin>invoke server.jndi-service.unbindRemoteReference