WebOTX Manual V11.1 (第6版) 目次を表示 |
WebOTX Object Broker の環境設定について説明します。
WebOTX Object Broker JavaTM の場合、oadjが使用するJavaTMの環境設定を必要とします。 Javaアプリケーションをご利用になる前に、「oadjに関する設定項目」のOadJJdkRootを設定してください。
oad/oadjや名前サービス、インタフェースリポジトリなどのWebOTX Object Broker を構成するサーバ群の設定は、Windows版の場合はレジストリで、UNIX版ではファイルまたは環境変数を用いて行います。
すべての設定は当該マシン上でのみ有効です。
アプリケーション単位での設定は、jp.co.nec.orb.Configクラスの各設定メソッドにより行うものと、プロパティの指定により行うものとがあります。
レジストリエディタを用いて
HKEY_LOCAL_MACHINE\SOFTWARE\NEC\ObjectBroker\<バージョン番号>
に設定したい項目の文字列エントリを作ります。設定する値はエントリの値として設定します。ポート番号などの数値も文字列として設定してください。
設定例
名前 | データ |
---|---|
OrbRoot | "C:\WebOTX\ObjectBroker" |
NameServicePort | "3400" |
環境変数、環境変数ORBCONFIGで指定されたファイル、~/.orbconf、/opt/WebOTX/ObjectBroker/conf/orbconfの順に設定値を検索します。
環境変数に設定値が存在しないときは、ファイルを検索します。ファイルに関しては最初に見つかったファイルだけを検索します。上記順序で最初に存在するファイル内を検索した結果、設定が存在しない場合、以降のファイルの検索は行われません。設定値によっては既定値が使われることがありますのでご注意ください。
設定例
この項目はWebOTX Object Brokerをインストールすると自動的に設定されます。
Linuxにおいて、~/.orbconfなどでユーザごとの設定を変える場合、/opt/WebOTX/ObjectBrokerを指定する必要があります。
設定名 意味 OrbRoot ORBがインストールされているディレクトリをフルパスで設定します。このディレクトリにはconfおよびlogサブディレクトリが必要です。
必要に応じて以下の設定を行ってください。
oadに関する設定項目
名前サーバに関する設定項目
インタフェースリポジトリに関する設定項目
イベントサービスに関する設定項目
インタオペラブル名前サービスに関する設定項目
共通の設定項目(oad/名前サーバ/インタフェースリポジトリ/イベントサービス/インタオペラブル名前サービス)
oadjに関する設定項目
プロセスに対するオプション設定(C++)
インプリメンテーション単位のオプション設定(C++)
oadでのサーバプロセス自動起動に関するオプション設定(C++)
ログ出力に関するオプション設定(C++)
設定名 意味 OadPort oadの使用するポート番号を指定します。
ORB通信するすべてのホストで同一のポート番号を使う必要があります。未指定時の既定値は9825です。運用開始後にoadのポート番号を変更すると、それ以前に作ったオブジェクトを呼び出すことができなくなります。変更するときは、oadやnamesvおよびすべてのORBアプリケーションをいったん終了してから変更してください。OadActivationMode disabledを指定すると一切サーバの自動起動を行いません。 OadNoCheckActivation enabledを指定するとあらゆるホストからの活性化を受け付けます。またサーバの実行ファイルについても一切の制限なく受け付けます。このモードは以前の版との互換性のため導入されました。このモードの使用はセキュリティ上の問題を引き起こす恐れがあります。 OadAllowRelativePath true を指定すると、"/../"を含むパスのサーバ実行ファイルでも自動起動を行います。未指定時およびyes, on, true以外が指定されたときは"/../"を含むパスのサーバ実行ファイルは自動起動を行いません。 OadActivationTimeout oadによるサーバプロセス自動起動時に起動完了通知を待つ時間を秒単位で設定します。未指定時は10秒待ちます。
- WebOTX Object Brokerを使用して協調動作させようとするマシンすべてにおいて、OADのポート番号の設定を同一にする必要があります。
設定名 意味 NameServiceHostName 名前サーバが動作するホスト上で指定すると、名前サーバのIOR中に含まれるホスト情報として使われます。 NameServiceExportHostName 名前サーバが動作するホスト上で指定すると、名前サーバのIOR中に含まれるホスト情報として使われます。NameServiceHostNameと同時に指定した場合、この設定が優先されます。 NameServicePort 名前サーバを動作させるホスト上で名前サーバに特定のポート番号を使わせたいときに指定します。名前サーバが動作していないホスト上で指定しても効果はありません。
名前サービス運用開始後にポート番号を変えるとそれ以前に付けられた名前は使えなくなります。この場合、いったん名前サービスを停止後、conf/namesv.ndfファイルを削除してから変更してください。NameServiceFileSaveRetryInterval 名前サーバ終了時にパーシステントデータを保存できないとき、データ書き込みの再試行を行う時間を設定します。未指定時は30秒となります。設定できる上限の値は2,147,483,647です。この値を越えたり、負の値を設定してはいけません。 NameServiceIdWithOMGORG 旧バージョンや他社製品でIDL:omg.org/で始まるリポジトリIDを正しく処理できないORBと通信を行う場合にoffを指定します。指定すると名前サービスのリポジトリID(IDL:omg.org/)を従来形式(IDL:)でマーシャルします。 NameServiceAccessCheck onを指定すると${OrbRoot}/conf/namesvwtに記述されたホストおよび名前サーバが動作しているホスト以外からはresolve以外の名前サービスへのアクセスができなくなります。namesvwtには書き込みアクセスを許可するホストのホスト名またはIPアドレスを記述します。 NameServiceThreadPolicy スレッド処理方針を設定します。
指定なし…シングルスレッドで実行されます。
"permethod"…メソッドごとにスレッドを作成して実行されます。
"pool"…あらかじめ作成されたスレッドで実行されます。NameServiceCheckAlive oadによる名前サーバの定期的な生死確認を行なうかどうかをon / offで指定します。既定値はonです。静止確認時に名前サーバからの応答がない場合は、oadから、名前サーバの情報を削除します。ネットワーク負荷の大きなシステムでは、誤削除を避けるためoffを指定して下さい。 NameServiceBackupNDF NDFファイルのバックアップ機能を利用するかどうかをon / offで指定します。既定値はonです。 NameServiceManagementNDF 壊れているNDFファイルは、調査の為に退避されますが、何世代まで退避しておくかを指定します。既定値は2世代です。退避されたNDFファイルは、{OrbRoot}/conf配下に格納されます。 NameServiceFileSaveRetryCount 名前サーバ終了時にパーシステントデータを保存できないとき、データ書き込みの再試行を行う回数を設定します。既定値は2回です。設定できる上限の値は2,147,483,647です。この値を越えた値や負の値を設定してはいけません。 NameServiceExternalRootContext この設定にtrueを指定したホスト上で動作する名前サーバのルートコンテキストのオブジェクトリファレンスであれば、名前サーバは、どのホスト上で動作する名前サーバのルートコンテキストのオブジェクトリファレンスでの呼び出しでも受け付けます。 falseが指定されている場合、別ホスト上で動作する名前サーバのオブジェクトリファレンスで呼び出されると、名前サーバはCORBA::OBJECT_NOT_EXIST例外を返します。 既定値はfalseです。
- 複数のWebOTX Object Broker利用アプリケーションをインストールしている場合、まれに、NameServiceHostNameに他ホストの設定を指定し、かつ、そのホスト上で名前サーバを起動する必要があります。この場合はNameServiceExportHostNameに自ホスト名を設定してください。
設定名 意味 InterfaceRepositoryHostName インタフェースリポジトリが動作するホスト上で指定すると、インタフェースリポジトリのIOR中に含まれるホスト情報として使われます。 InterfaceRepositoryPort インタフェースリポジトリを動作させるホスト上でインタフェースリポジトリに特定のポート番号を使わせたいときに指定します。インタフェースリポジトリが動作していないホスト上で指定しても効果はありません。
インタフェースリポジトリ運用開始後にポート番号を変えるとそれ以前に登録されたインタフェース定義情報は使えなくなります。この場合、いったんインタフェースリポジトリを停止後、conf/InterfaceRepository.irfファイルを削除してから変更してください。InterfaceRepositoryFileSaveRetryInterval インタフェースリポジトリ終了時にパーシステントデータを保存できないとき、データ書き込みの再試行を行う時間を設定します。未指定時は30秒となります。設定できる上限の値は2,147,483,647です。この値を越えたり、負の値を設定してはいけません。 InterfaceRepositoryIdWithOMGORG 旧バージョンや他社製品でIDL:omg.org/で始まるリポジトリIDを正しく処理できないORBと通信を行う場合にoffを指定します。指定するとインタフェースリポジトリのリポジトリID(IDL:omg.org/)を従来形式(IDL:)でマーシャルします。 InterfaceRepositoryCheckAlive oadによるインタフェースリポジトリの定期的な生死確認を行なうかどうかをon / offで指定します。既定値はonです。静止確認時にインタフェースリポジトリからの応答がない場合は、oadから、インタフェースリポジトリの情報を削除します。ネットワーク負荷の大きなシステムでは、誤削除を避けるためoffを指定して下さい。
設定名 意味 CosEventBufSize イベントサービスの内部バッファの大きさを指定します。未指定時は128が使われます。内部バッファとしては、設定値+1を確保しますが、常時使えるのは設定値までとなります。設定できる上限の値は2,147,483,647です(ただし、メモリの許す範囲)。この値を越えたり、負の値を設定してはいけません。 CosEventDoHealthCheck trueを指定すると、イベントチャンネルと接続している生産者または消費者との通信がCosEventPollInterval以上途切れると生産者または消費者との接続を切ると同時に接続が切れたことを表わすイベントを各消費者に最優先で送ります。未指定時にはこの機能は働きません。 CosEventPollInterval 上記接続断判定に用いる時間を設定します。未指定時は120秒となります。設定できる上限の値は42,929,672,951です。この値を越えたり、負の値を設定してはいけません。
設定名 意味 CorbalocDefaultPort URLでポート番号を指定しなかったときの値を設定します。
未設定時は2809です。CorbalocServerPort corbalocサーバが使用するポート番号を変更します。
この設定は初期設定値以外のポート番号に変更するときに使います。
ポート番号の初期設定値は9827です。CorbalocAskWithMT この設定は、初期サービスのアドレスを複数指定したときの動作を指定します。
この設定を"on"にすると、マルチスレッドによる同時処理をします。
未設定時は順次処理が行われます。ToUrlForIiopname この設定にfalseを指定したとき、CosNaming::NamingContextExt::to_urlメソッドは、corbaname URLを返します。
未設定時はiiopname URLを返します。
設定名 意味 GetHostNameCache offを指定するとIPアドレスの解決に毎回gethostbynameを使います。未指定時およびoff、false、0以外を指定したときは同一ホスト名に対して1プログラムからは1回しかgethostbynameを呼び出しません。 PoolThreadNumber プールスレッド数を指定します。未指定時は2です。 MesBufSize メッセージバッファ分割の大きさを指定します。単位はバイトです。未指定時は65536が使われます。 MesBufNum 初期メッセージバッファの分割されたメモリ領域個数を指定します。未指定時は1が使われます。 ListenBackLog サーバプロセスでイベント処理ループ以外のときにもOSで受け付けるコネクション数を指定できます。未指定時は5となります。 AlternativeHostName WebOTX Object Brokerランタイムライブラリ内で、gethostnameで得られるホスト名以外をホスト名として使用する場合にそのホスト名を指定します。 AlternativeHostNames ネットワークインタフェースカードを複数持つホストのとき、それぞれのインタフェースカードのIPアドレスに対応するホスト名をコロン(':')区切りで指定します。 MaxPathMark LocationForwardプロトコル処理で使われるIORのキャッシュエントリ数を指定します。既定値は5です。 MesBufTryLen MesBufSizeに32767以上を指定した場合で、sendシステムコールで一度に送信要求する大きさを32767以上にしたいとき、MesBufTryLenで指定します。MesBufSizeを越えて設定することはできません。 SockBufSize OS内部のソケットごとのバッファサイズを指定します。単位はバイトです。未指定時は65536が使われます。
0を指定した場合、各オペレーティングシステムに依存した値になります。ServerKeepAlive onを指定すると、TCP/IPレベルでのKEEPALIVEをそのマシン内の全サーバプロセスで使用します。既定値はonです。 TCPNODELAY TCPNODELAYをoffに設定すると、WebOTX Object BrokerランタイムはTCP_NODELAYソケットオプションを使用しません。TCP_NODELEYを使うと、WindowsではMTU(物理ネットワークの最大パケット長)を下回るデータの連続送信時に性能が改善されます。 SysExcWithOMGORG 旧バージョンや他社製品でIDL:omg.org/で始まるリポジトリIDを正しく処理できないORBと通信を行う場合にoffを指定します。指定すると例外のリポジトリID(IDL:omg.org/)を従来形式(IDL:)でマーシャルします。 GIOPMinorVersion GIOPのマイナーバージョンを指定します。GIOP1.0を使用して通信を行うためには、0を指定する必要があります。未設定時は3で、インストール時には2が設定されています。 IIOPMinorVersion IIOPのマイナーバージョンを指定します。IIOP1.0を使用して通信を行うためには、0を指定する必要があります。未設定時は3で、インストール時には2が設定されています。
ただし、GIOPMinorVersionの設定よりも大きい数字を指定したときは、GIOPMinorVersionと同じ設定になります。UseProfileBodyComponents IOR ComponentsをProfileBody内に格納するか、MultipleComponent内に格納するかを設定します。この設定がonのときは、ProfileBody内に格納します。offのときは、MultipleComponent内に格納します。未設定時はoffです。
ただし、IIOPMinorVersionが0に設定されているときは、この設定にかかわらず、MultipleComponent内に格納します。RequestTimeout メソッド呼び出しにかかる最大待ち時間(0以上の整数)を設定します。0を設定すると処理が戻ってくるまで待ち続けます。既定値は30秒です。 ServerRequestTimeout クライアントからのリクエスト処理にかかる最大待ち時間(0以上の整数)を設定します。0を設定すると処理が戻ってくるまで待ち続けます。既定値は30秒です。 ExternalHostName 負荷分散装置を使用する場合に、負荷分散装置のIPアドレスを指定します。 UseConnectionRetry trueを指定すると、サーバとのコネクションが無効になった場合にリトライを行います。既定値はfalseで、その際はリトライは行いません。 RetryForConnectionRoundRobin trueを指定すると、コネクションラウンドロビン利用時に、サーバとのコネクションが無効になった場合にリトライを行います。既定値はfalseで、その際はリトライは行いません。 ClientAutoTimeout クライアント側で一定時間送受信要求の無いコネクションを監視するタイマ値(秒)を指定します。指定されたタイマ値の間メッセージの送受信を行わなかったクライアントコネクションは切断されます。既定値は0 で、この場合、無通信監視は行いません。 ConnectTimeout コネクション確立のタイマ値(秒)を指定します。既定値は3です。 MaxConnectRetry コネクション確立失敗時のリトライ回数を指定します。既定値は10です。 MaxMessageSize 受信可能なメッセージの最大サイズを指定します。既定値は、8,388,608バイト(8M)です。 UseOad oadを使用するか否かを指定します。既定値は、falseです。
trueの場合、例えば、名前サーバやキャッシュ名前サーバをresolve_initial_reference()で取得する際にoadを介さずにオブジェクトリファレンスを取得します。BindRetryCount 起動処理で、サーバポート開設に失敗した時の再試行回数を設定します。既定値は、10です。
0を設定した場合は再試行を行いません。BindRetryInterval 起動処理で、サーバポート開設に失敗した時の再試行間隔を秒単位で設定します。既定値は、3です。
- 全体のタイムアウト時間は、(ConnectTimeout × MaxConnectRetry) 秒になります。ただし、RequestTimeoutの設定がこれより短い場合にはRequestTimeoutの値が使用されます。全体のタイムアウト時間を過ぎるか、コネクトのリトライをMaxConnectRetry回行う間にコネクトができなければ、例外がスローされます。
- ListenBackLogの数値が不足していると、サーバプロセス(例えば、名前サービス)は起動しているにも関わらず、アクセスできないという現象が発生することがあります。目安としては、OSのソケット数上限の許す範囲で、最大同時アクセスユーザ数X2を設定してください。
設定名 意味 OadJJdkRoot oadjが使用するJDKのインストールディレクトリをフルパスで設定します。 OadJPort oadjの使用するポート番号を指定します。未指定時の既定値は9826です。 OadJInitLog onを指定するとoadjの起動に関するログをとることができます。ログは${OrbRoot}/log/oadjinit.logに出力されます。 ORB起動時にoadjプロセスが起動されないような問題の解決に有効です。未指定時の既定値はonです。 OadJLogLevel ログレベルを切り替えることにより、oadjの運用時のログをとることができます。ログは${OrbRoot}/log/oadj.logに出力されます。ログレベルには以下のものがあります。未指定時の既定値はERRORです。
NO - 診断メッセージを出力しません。
ERROR - 通信エラーなど、エラーが起ったときに診断メッセージを出力します。
WARN - エラーではないが警告的な意味合いを持つ状況が起ったときに診断メッセージを出力します。
INFO - アプリケーションプログラムの動作情報を出力します。
DEBUG - 詳細な診断情報を出力します。
自動起動サーバプロセスが起動されないような問題の解決に有効です。OadJLogFileSize oadjのログファイルの上限値(キロバイト)を指定します。ログファイルのサイズがこの値を超えると、新しいログファイルが作成されます。古いログファイルは、<ログファイル名.bak> として保存されます。
(注)この値は目安であり、ログファイルのサイズが設定値を上回る場合があります。OadJJavaOptions oadj起動時に呼び出されるjava/jre起動コマンドに渡すコマンド行オプションを指定します。複数のオプションが指定できます。未指定時は何も渡されません。通常は指定する必要はありませんが、何らかのjava/jre実行時の問題を回避するような場合に有効となります。オプションについては、JDK/JREのドキュメントを参考にしてください。
例)メモリ割り当てプールの初期サイズと最大サイズを指定する場合。
OadJJavaOptions=-Xms64m -Xmx128mOadJServerActivationTimeout oadjによるサーバプロセス自動起動時に起動完了通知を待つ時間をミリ秒単位で設定します。未指定時は30000ミリ秒待ちます。 OadJAliveCheckSleepTime oadjにより起動されたサーバプロセスの生存を確認する間隔をミリ秒単位で設定します。未指定時は30000ミリ秒間隔で確認します。
次の表にある設定は関数でも指定できます(一部は関数のみ)。
~/.orbconfなどによる設定はすべてのプロセスに反映されます。特定のプロセス内でのみ有効な値を設定するには関数による設定を行います。
設定内容 設定名/関数 値の種類または範囲 既定値 クライアントでの同一サーバへのソケット再利用 設定名 - - - 関数 __reuse_socket (*1) 1
(再利用する)0
(再利用しない)1
(再利用する)メソッド呼び出しにかかる最大待ち時間 設定名 RequestTimeout 0以上の整数(unsigned long値)(*2) 30(秒) 関数 __request_timeout (*1) クライアントからのリクエスト処理にかかる最大待ち時間 設定名 ServerRequestTimeout 0以上の整数(unsigned long値)(*2) 30(秒) 関数 __server_request_timeout(*1) (*1) クラスCORBA::ORBのメンバ関数
(*2) 0を設定すると処理が戻ってくるまで待ち続けます。
次の表にある設定はインプリメンテーション単位の設定です。
1サーバプロセスで扱うことのできるインプリメンテーションは通常1つなので、関数での設定ではインプリメンテーション名を__implementation_nameで1度だけ指定します。各設定関数では指定しません。
これに対し、設定名を使った設定では、どのインプリメンテーションに対しての設定であるかを区別させるためにインプリメンテーション名の後ろに設定する内容を示すキーワードをつなげた設定名を使います。たとえば、サーバパス名の設定時には、
"インプリメンテーション名"PathName
とします。
例)
インプリメンテーション名 : SampleImpl
サーバパス名 : /XXX/YYY/ZZZ
のとき、サーバパス名の設定は
SampleImplPathName=/XXX/YYY/ZZZ
となります(Linuxの場合)。
設定内容 設定名/関数 値の種類または範囲 既定値 インプリメンテーション名 設定名 - - - 関数 __implementation_name (*1) 任意の文字列 "noname" サーバパス名 設定名 "ImplName"PathName サーバパスを表す文字列 "" 関数 __server_path_name (*1) サーバポート番号 設定名 "ImplName"Port 0以上の整数(unsigned short値) 0 (*2) 関数 __server_port (*1) サーバポート番号(SSL) 設定名 "ImplName"SSLPort 1以上の整数(unsigned short値) 0 (SSLを使用しない) (*3) 関数 __use_ssl (*1) 活性化方針 設定名 "ImplName"ActPolicy "corba_sharedserver"
(共有サーバ)"corba_unsharedserver"
(非共有サーバ)"corba_persistentserver"
(永続サーバ)"corba_serverpermethod"
(メソッドごとのサーバ)"corba_sharedserver"
(共有サーバ)関数 __server_activation_policy (*1) Obi::SharedServer
(共有サーバ)Obi::UnsharedServer
(非共有サーバ)Obi::PersistentServer
(永続サーバ)Obi::ServerPerMethod
(メソッドごとのサーバ)Obi::SharedServer
(共有サーバ)サーバホスト名 設定名 "ImplName"HostName サーバが動作するホスト名 hostnameで返される名前 関数 __server_hostname (*1) サーバプロセス自動起動引数 設定名 - - - 関数 __server_argument (*1) ORB用引数のみ ORB用引数のみ 自動起動引数でORBが利用する位置指定 設定名 - - - 関数 __server_argument_index (*1) 0以上の整数(unsigned long値) 0 サーバプロセスでのスレッド処理方針 設定名 "ImplName"ThreadPolicy 指定なし
(サーバはシングルスレッドで実行される)"permethod"
(サーバはメソッドごとにスレッドを作成して実行される)"pool"
(サーバはあらかじめ作成されたスレッドで実行される)指定なし
(サーバはシングルスレッドで実行される)関数 __server_thread_policy (*1) Ob_thr_default
(サーバはシングルスレッドで実行される)Ob_thr_permethod
(サーバはメソッドごとにスレッドを作成して実行される)Ob_thr_pool
(サーバはあらかじめ作成されたスレッドで実行される)Ob_thr_default
(サーバはシングルスレッドで実行される)※ "ImplName"はインプリメンテーション名を表します。
(*1) クラスCORBA::ORBのメンバ関数
(*2) 0を指定すると実行時にOSが空いているポート番号を割り当てます。0を指定したときだけ自動起動が可能です。0以外を指定するとそのポートが使われます。また、0以外を指定したときは自動起動されません。
(*3) SSLを使用したサーバの自動起動はサポートしていません。
Object Brokerの既定値の設定ではサーバプロセスが立ち上がっていないときにクライアントがオブジェクトを呼び出すと、oadがサーバプロセスを自動的に立ち上げます。ここでは自動起動に関する設定項目について説明します。
以下の設定項目があります。
設定ファイルとは別のファイルを使った設定項目として、以下の2点があります。
5, 6についてそれぞれ説明します。
クライアントホストによる自動起動制限
ディレクトリ${OrbRoot}/confの次のファイルで記述します。
actallow 自動起動を許すホストのリスト
actdeny 自動起動を許さないホストのリスト
これらのファイルはどちらか一方だけでも両方を置いてもかまいません。また、両方置かないことも可能です。ファイルの組み合わせの意味は次のとおりとなります。
actallow、actdenyとも存在しない | すべてのホストからの自動起動を許す。 |
actdenyだけ存在する | actdenyに記述されていないホストからの自動起動を許す。 |
actallowだけ存在する | actallowに記述されていないホストからの自動起動は許さない。 |
両方存在する | actdenyに記述されていなくてかつactallowに記述されているホストからの自動起動だけを許す。actallow、actdeny双方に記述されているホストからの自動起動は許さない。どちらにも記述されていないホストからの自動起動は許さない。 |
ファイルのパス名による自動起動制限
ディレクトリ${OrbRoot}/confの次のファイルで指定します。
exeallow 自動起動を許すファイルパス名のリスト
exedeny 自動起動を許さないファイルパス名のリスト
ホストでの制限同様これらのファイルはどちらか一方だけでも両方を置いてもかまいません。また、両方置かないことも可能です。ファイルの組み合わせの意味は次のとおりとなります。
exeallow、exedenyとも存在しない | すべてのファイルの自動起動を許す。 |
exedenyだけ存在する | exedenyに記述されていないファイルの自動起動を許す。 |
exeallowだけ存在する | exeallowに記述されていないファイルの自動起動は許さない。 |
両方存在する | exedenyに記述されていなくてかつexeallowに記述されているファイルの自動起動だけを許す。exeallow、exedeny双方に記述されているファイルの自動起動は許さない。どちらにも記述されていないファイルの自動起動は許さない。 |
形式
1行につき1ファイルパス名を記述します。このとき余分な空白を書いてはいけません。
例: /usr/local/bin/adminserverの自動起動を許す場合
exeallowファイル:
/usr/local/bin/adminserver
Object Brokerではオブジェクトリファレンス中にサーバプログラムのファイル名および引数が含まれていますので、安全のためサーバ側での自動起動可能ホスト管理、自動起動可能ファイルパスの管理をしっかり行うことをおすすめします。
なお、ファイル名の同一性判定は単純な文字列としての同一性で判定しています。それゆえ、//bin/rm、/bin/rm、/bin/./rmはそれぞれ別ファイルとして扱われますのでご注意ください。
設定名/関数 意味 設定名 LoggingLevel 例外として返せないエラーなどの情報をロギングファイルに出力するときの出力レベルです。ERRORを指定するとエラー情報のみを出力します。WARNINGを指定するとエラーとワーニングの情報を出力します。INFORMATIONを指定するとすべての情報を出力します。ロギングファイルは出力する情報が発生した時点で作られます。既定値はERRORです。 引数 -ORBLoggingLevel 設定名 MessageLogPerProcess onを指定すると通信ログをプロセス毎に出力します。プロセス毎の出力の場合、ログが出力されるファイル名は、message_<プロセスID>.logになります。未指定時はoffです。 引数 -ORBMessageLogPerProcess
設定名 意味 LoggingOutput ロギングファイル名を指定します。未指定時は${OrbRoot}/log/ObLog.logとなります。 OadLoggingLevel oadのLoggingLevelを設定します。設定と引数の両方が指定されている場合は、引数が優先されます。指定可能な値は、LoggingLevelと同じです。未指定時は、LoggingLevelの値が使用されます。 NameServiceLoggingLevel 名前サーバのLoggingLevelを設定します。設定と引数の両方が指定されている場合は、引数が優先されます。指定可能な値は、LoggingLevelと同じです。未指定時は、LoggingLevelの値が使用されます。 InterfaceRepositoryLoggingLevel インタフェースリポジトリのLoggingLevelを設定します。設定と引数の両方が指定されている場合は、引数が優先されます。指定可能な値は、LoggingLevelと同じです。未指定時は、LoggingLevelの値が使用されます。 CorbalocLoggingLevel corbalocサーバのLoggingLevelを設定します。設定と引数の両方が指定されている場合は、引数が優先されます。指定可能な値は、LoggingLevelと同じです。未指定時は、LoggingLevelの値が使用されます。 MessagingLog onを指定すると通信相手、通信量のログをとることができます。 MessageBodyLog onを指定すると通信内容のログをとることがきます。 MessageLogFile 通信ログ出力先ファイル名を指定します。未指定時は${OrbRoot}/log/message.logとなります。 LogIdsInHex trueを設定すると通信ログでのプロセスID、スレッドIDを16進表示します。 Syslog onを指定するとシステムログ情報をsyslogに出力します。
(注)Windowsの場合、出力先は${OrbRoot}/log/syslog.logとなります。SyslogDetail onを指定すると詳細なシステムログ情報をsyslogに出力します。 SyslogForOperator onを指定するとシステム運用者向けのログ情報を出力します。 SyslogForDeveloper onを指定するとアプリケーション開発者向けのログ情報を出力します。 LogLimit 各ログファイルの上限値(キロバイト)を指定します。(既定値: 10240)
ログファイルのサイズがこの値を超えると、新しいログファイルが作成されます。 古いログファイルは、< ログファイル名_old > として保存されます。
(注) この値は目安であり、ログファイルのサイズが設定値を上回る場合があります。
WebOTX Object Broker JavaTM のアプリケーションは、以下の方法でORBに関する設定を行うことができます。
プロパティによる設定については、[ Application Server > アプリケーション開発ガイド > CORBA アプリケーション > プログラミング・開発ガイド > Object Broker > Object Broker Javaの機能 ] を参照してください。
プロパティの一覧については、[ Application Server > リファレンス > 設定 > Object Broker > WebOTX Object Broker JavaにおけるORBのプロパティ定義 ] を参照してください。
名前サーバに関する特殊な設定について説明します。
本書では同一の名前でresolveを呼んだ場合、呼び出すたびに別のオブジェクトを返すためのWebOTX Object Broker独自の拡張機能(この機能をラウンドロビン機能と呼びます)について説明します。この機能を有効にするには、以下の設定を行う必要があります。設定の仕方については「オペレーティングシステム別の設定方法」を参照してください。
設定名 意味 NameServiceRoundRobin onを設定するとラウンドロビン機能が有効になります。
未設定時にラウンドロビンのインタフェースが呼ばれたときの動作は保証しません。
設定名 意味 NameServiceConvertIOR 変換データファイルのパス または auto を指定します。
- 概要:
- 名前サーバの登録情報は、${OrbRoot}/conf/namesv.ndfに保存され、名前サーバの起動時に読み込まれます。当機能は、namesv.ndfに登録されているオブジェクトリファレンス (IOR: Interoperable Object Reference)のホスト情報(ホスト名またはIPアドレス)、ポート番号を変更するためのものです。
通常の運用において、この設定を行ってはいけません。
- 登録情報の変更が必要となる状況:
- 名前サーバ自身の動作するホストやポート番号が変更になった場合
- 登録されているオブジェクトリファレンスが示すオブジェクトのホストやポート番号が変更になった場合
- 変換データファイル:
- IORの変換規則を記述するファイルで、フォーマットは以下の通りです。
各エントリを省略することはできません。
改行で区切ることにより複数の変換規則を記述できます。
インプリメンテーション名1:ホスト情報1:新ホスト情報1:新ポート番号1
インプリメンテーション名2:ホスト情報2:新ホスト情報2:新ポート番号2- 記述例1
- 名前サーバを動作させるホストを、oldserverからnewserverに変更し、ポート番号を9898にするとき
NameService:oldserver:newserver:9898この変換を行う場合は、必ずnewserver、ポート番号9898で、名前サーバを起動してください。
これらが一致しない場合の動作は保証しません。
- 記述例2
- 名前サーバに登録されているオブジェクトリファレンス (インプリメンテーション名がMyObject) のホスト情報をmyhost1からmyhost2に変更し、ポート番号を9876にするとき
MyObject:myhost1:myhost2:9876- autoを指定した場合の動作:
- 名前サーバの動作するホストを現在のホスト情報、ポート番号に変更します。
変換データファイルに以下の記述を行った場合と同等です。NameService:旧ホスト情報:現在のホスト情報:現在のポート番号
旧版の名前サーバが生成したnamesv.ndfを読み込む場合は、この設定を行わないでください。- 変換手順:
- 名前サーバを停止します。
- namesv.ndfのバックアップを取ります。
- NameServiceConvertIORの設定を行います。
- 名前サーバを起動します。
- 変換したオブジェクトリファレンスが正常に利用できることを確認してください。
- NameServiceConvertIORの設定を解除します。
- 注意:
- IOR変換は、namesv.ndfのバックアップを取ってから行ってください。
- 名前サーバ自身のIOR変換を行う場合は、必ず、 新しいホスト名、ポート番号で名前サーバを起動してください。
- 誤ったIOR変換を行うと、そのオブジェクトリファレンスが無効なものになります。
- 変換を行う時以外は、この設定を行わないようにしてください。
- IOR変換を行って発生した問題については、いかなる保証も致しません。
CORBAでは、クライアントとサーバの間で文字/文字列データを受渡しするときに使用するコードセットの自動変換機能が規定されています。
プログラムが内部で使用しているコードセットをネイティブコードセットといいます。また、ネイティブコードセットに変換可能なコードセットのリストをコンバージョンコードセットといいます。
コードセットの設定方法は3とおりあります。設定が反映される優先順位は下記のとおりです。
関数 > プログラム実行時の引数 > ファイルやレジストリなど
Object Broker C++では下記のコードセットを利用することができます。
設定内容 設定名/引数名/関数 値の種類または範囲 既定値 string型のネイティブコードセットの指定 設定名 NativeCodeSet ISO8859-1
(ISO 8859-1:1987; Latin Alphabet No. 1)JIS_eucJP
(JIS eucJP:1993; Japanese EUC)OSF_SJIS1
(OSF Japanese SJIS-1)ISO646
(1991 IRV (International Reference Version))UTF8
(X/Open UTF-8; UCS Transformation Format 8 (UTF-8))OSF_SJIS1
(Windows)JIS_eucJP
(HP-UX, Solaris, Linux)引数名 -ORBOSPINativeCodeSet 関数 CORBA::ORB::__native_code_set wchar/wstring型のネイティブコードセットの指定 設定名 NativeCodeSetW UCS2_LEVEL1
(ISO/IEC 10646-1:1993; UCS2, Level 1)UCS2_LEVEL1
引数名 -ORBOSPINativeCodeSetW 関数 CORBA::ORB::__native_code_set_w string型のコンバージョンコードセットの指定 設定名 ConversionCodeSets ISO8859-1
(ISO 8859-1:1987; Latin Alphabet No. 1)JIS_eucJP
(JIS eucJP:1993; Japanese EUC)OSF_SJIS1
(OSF Japanese SJIS-1)ISO646
(1991 IRV (International Reference Version))UTF8
(X/Open UTF-8; UCS Transformation Format 8 (UTF-8))から重複しない任意の組み合わせ
JIS_eucJP,ISO8859-1,ISO646
(Windows)OSF_SJIS1,ISO8859-1,ISO646
(HP-UX, Solaris, Linux)引数名 -ORBOSPIConversionCodeSets 関数 CORBA::ORB::__conversion_code_sets wchar/wstring型のコンバージョンコードセットの指定 設定名 ConversionCodeSetsW UTF16
(ISO/IEC 10646-1:1993; UTF-16, UCS Transformation Format 16-bit form)UTF16
引数名 -ORBOSPIConversionCodeSetsW 関数 CORBA::ORB::__conversion_code_sets_w OSF_SJIS1(シフトJIS)とUTF8のコード変換の指定 設定名 UnicodeEncoding SJIS
(Shift-JIS(SJIS))
CP932
(Windows-31J(CP932))
SJIS
そのほかの設定として、以下のものがあります。
設定名 意味 UseCodeSet この設定が"off"のときは、コードセットを使用せずに通信を行います。"on"のときは、コードセットを使用して通信を行います。未設定時は"on"です。 CodeSetNegotiationStrictCheck コードセットに未対応のORBと接続可否を設定します。"off"に設定すると、CORBA仕様どおりに動作し、WCharのエンコード/デコードに必要な情報が不足しているときは例外となります。"off"に設定すると、CORBA仕様より相互接続性を優先し、WCharのコードセット情報がないときはUCS2_LEVEL1として処理します。Charのコードセット情報がないときは、この設定に関わらずISO8859-1として処理します。未設定時は"off"です。 SendCodeSetContextEverytime この設定が"on"のときは、CodeSetContextを毎回送ります。設定が"off"のときは、1コネクションにつき最初の一回だけ送ります。未設定時は"off"です。
ObjectSpinner R4.xのサーバとコードセットを使用して通信を行うには設定を"on"にする必要があります。設定方法
[設定]
初期設定はインストーラによって行われます。
[引数]
プログラム起動時の引数で設定する例を以下に示します。キーワードが複数記述されていたときは、最後のものを有効とします。
-ORBOSPINativeCodeSet OSF_SJIS1 -ORBOSPINativeCodeSetW UCS2_LEVEL1 -ORBOSPIConversionCodeSets JIS_eucJP,ISO8859-1,ISO646 -ORBOSPIConversionCodeSetsW UTF16[関数]
関数で設定する例を以下に示します。設定はCORBA::ORB_init関数呼び出し直後に行います。途中で変更した場合の動作は不定です。コードセットの設定はプロセス単位で行われます。スレッド毎にコードセットを変更することはできません。
CORBA::ORB_ptr orbobj = CORBA::ORB_init(...); orbobj->__native_code_set("OSF_SJIS1"); orbobj->__native_code_set_w("UCS2_LEVEL1"); Ob_StringSeq conv_cdsets; conv_cdsets.length(3); conv_cdsets[0] = CORBA_string_dup("JIS_eucJP"); conv_cdsets[1] = CORBA_string_dup("ISO8859-1"); conv_cdsets[2] = CORBA_string_dup("ISO646"); orbobj->__conversion_code_sets(conv_cdsets); Ob_StringSeq conv_cdsets_w; conv_cdsets_w.length(1); conv_cdsets_w[0] = CORBA_string_dup("UTF16"); orbobj->__conversion_code_sets_w(conv_cdsets_w);Caution
コードセットを使用するためには、GIOPおよびIIOPのバージョンを1.1以上に設定する必要があります。
ここでは、HP-UXでMC/ServiceGuard(以下MC/SG)を利用する場合に特化した設定について説明します。そのほかの環境ではこれらの設定をしてはいけません。
設定名 意味 LogicalHostName MC/SGによって多重化されたオブジェクトとして動作させるときの論理ホスト名を指定します。 LogicalIPAddress MC/SGによって多重化されたオブジェクトとして動作させるときの論理IPアドレス(ドット('.')区切りの文字列)を指定します。 NameServiceDuplicationAware trueを指定するとCORBA::ORB::__duplication_aware(1)で名前サーバを動作させます。つまり、MC/SGにより多重化された論理ホスト上の名前サーバとして動作します。
この指定を行ったときはLogicalHostNameおよびLogicalIPAddressの指定も必要となります。
設定がないとき、および、true以外を以外を指定したときには物理ホスト上の名前サーバとして動作します。NameServiceConfDirectory namesv.ndfファイルが置かれるディレクトリを指定します。設定がされていないときは$(OrbRoot)/confとなります。
ここでは、オブジェクト多重化を利用する場合の設定について説明します。
設定名 意味 MultiConnection 多重化されたオブジェクトリファレンスを使用する場合に、コネクションの多重化を行なう場合はtrueを設定します。 既定値はtrueです。falseのときはコネクションの多重化は行ないません。 ConnectionRoundRobin コネクションラウンドロビンを使用する場合は、trueを設定します。 既定値はtrueです。falseのときはコネクションラウンドロビンは使用しません。 ConnectionRoundRobinTimeout 多重化使用時に個々のサーバへのメソッド呼び出しにかかる最大待ち時間(0以上の整数)を設定します。 この設定がないときは、RequestTimeoutと同じ値です。また0を設定したときは処理が戻ってくるまで待ち続けます。 MaxConnection コネクションの最大接続数(0以上の整数)を設定します。 この設定がないとき、および、0を設定したときは上限を設定しません。 ConnectionWatchInterval 多重化されたオブジェクトのコネクションの状態を監視する間隔時間(0以上の整数)を設定します。 この設定がないときは、300秒です。ただしMultiConnectionが有効でない場合は、意味を持ちません。
GIOP/IIOPに関する以下の設定項目は、設定ファイルまたは起動時引数(この引数はCORBA::ORB_init関数にそのまま渡します)で指定できます。
引数での指定例)
MyApp -ORBGIOPMinorVersion 1
引数で指定した場合、設定ファイルでの指定より優先されます。
設定名 意味 GIOPMinorVersion GIOPのマイナーバージョンを指定します。 GIOP1.0を使用して通信を行うためには、0を指定します。指定可能な値は,0、1、2および3です。 既定値は3です。 -ORBGIOPMinorVersion IIOPMinorVersion IIOPのマイナーバージョンを指定します。IIOP1.0を使用して通信を行うためには、0を指定します。 ただし、GIOPMinorVersionの設定よりも大きい数字を指定したときは、GIOPMinorVersionと同じ設定になります。 指定可能な値は,0、1、2および3です。 既定値は3です。 -ORBIIOPMinorVersion UseFragmen trueを指定した場合、メッセージ送信時にフラグメント分割します。 既定値は2です。 -ORBUseFragmen AddWcharWidthOctet trueを指定した場合、wcharの直前に長さを示すオクテットを追加します。 既定値はtrueです。 -ORBAddWcharWidthOctet AddWstringWidthOctet trueを指定した場合、wstringの各文字の直前に長さを示すオクテットを追加します。 既定値はfalseです。 -ORBAddWstringWidthOctet PrepareWcharBOM trueを指定した場合、UTF-16のwchar、wstringのデータをアンマーシャルするときにBOMが付加されたデータとして処理します。 既定値はfalseです。 -ORBPrepareWcharBOM PriorToBOMForMultiOctets UTF-16のwchar、wstringのデータをアンマーシャルするときにBOMが付加されていない場合に従う バイトオーダをBOM仕様のバイトオーダとするかメッセージヘッダに指定されているバイトオーダに従うかどうかを指定します。 trueの場合はBOM仕様に従います。 falseの場合はメッセージヘッダに従います。 既定値はfalseです。 -ORBPriorToBOMForMultiOctets AllowNullString trueを指定した場合、wstringのデータをマーシャルするときにNULL文字を許します。 既定値はfalseです。 -ORBAllowNullString TargetAddress リクエスト送信時に使用するアドレスモードを指定します。 KeyAddr: ObjectKeyを使用します。 ProfileAddr: IORを使用します。 ReferenceAddr: 参照アドレス使用します。 既定値はKeyAddrです。 -ORBTargetAddress LocateReplyAlign8 trueを指定した場合、LocateReplyのとき、ヘッダの後ろで8byteアラインを行います。 既定値はtrueです。 -ORBLocateReplyAlign8
設定名 意味 PrepareWcharBOMAtMarshaling UTF16のwcharおよびwstringのエンコードでBOMを付加するかどうかを指定します。 trueを指定した場合、BOMを付加します。既定値はfalseです。 WcharMarshalWithMessageByteorder UTF16のwcharおよびwstringをエンコードするときのバイトオーダを指定します。 trueを指定すると、メッセージのバイトオーダでエンコードします。 falseを指定すると、BigEndian(CORBA仕様)でエンコードします。既定値はtrueです。
C++では、OpenSSL関連の設定は、以下の設定(レジストリ)、またはCORBA::ORB_init()の引数のどちらかで行ないます。
C++のサーバの場合、ServerCertFileとSSLPortの設定が最低限必要です。
証明書ファイルにprivate keyが含まれていない場合、private keyも指定する必要があります。
Private keyの指定は、以下の設定(レジストリ)または引数で行います。
設定名 意味 ServerCertFile サーバ証明書を格納したファイルを指定します。
既定値はありません。ClientCertFile クライアント証明書を格納したファイルを指定します。
既定値はありません。ClientCertKey PEM 形式のクライアント証明書のファイル名を設定します。 クライアント認証を要求するサーバと通信する場合は必ず設定しなければなりません。
(例) D:\\temp\\userCA.pem
既定値はありません。ServerCertKeyPassPhrase サーバ証明書のパスフレーズを指定します。
既定値はありません。ClientCertKeyPassPhrase クライアント証明書のパスフレーズを指定します。
既定値はありません。TrustedCACertsPassPhrase 信頼できるCAの証明書のパスフレーズを指定します。
既定値はありません。TrustedCACerts PEM 形式の信頼するCA証明書のファイル名を設定します。
(例) D:\\temp\\CA.pem
既定値はありません。ServerPrivateKeyFile サーバのprivate keyを格納したファイルを指定します。
既定値はありません。ClientPrivateKeyFile クライアントのprivate keyを格納したファイルを指定します。
既定値はありません。
[引数]
上記設定名に"-ORB"を付加した引数を以下の形式で指定します。
-ORB<設定名> <設定値>
例)
-ORBServerCertFile <証明書を格納したファイル名>
SSLPortとCertRequestについては以下の設定を参照してください。
設定内容 設定名/関数 値の種類または範囲 既定値 サーバポート番号(SSL) 設定 "ImplName"SSLPort 1以上の整数(unsigned short値)
0
(SSLを使用しない) (*3)0 関数 __use_ssl (*1) クライアントの証明書を要求 設定 "ImplName"CertRequest true/false false
サポートしている証明書のファイルの形式は、PEM形式のみです。SSLPortとCertRequestについては、レジストリで指定する場合は、設定名は、<インプリメンテーション名>を先頭に付加した名前になります。
例)
MyImplSSLPort
ここでは、IPv6に関する設定について説明します。
設定名 意味 PreferIPv6Addresses(C++)
java.net.preferIPv6Addresses(Java)IPv4とIPv6の両方が利用可能な環境で、IPv6のアドレスを優先するかどうかを指定します。 trueを指定すると、IPv6アドレスを優先して利用します。 falseを指定するとIPv4アドレスを優先します。既定値はfalseです。 PreferIPv4Stack(C++)
java.net.preferIPv4Stack(Java)IPv4のみを利用可能にするかどうかを指定します。 trueを指定すると、IPv4のみ利用可能となります(IPv6が利用できる環境でも、 IPv6が利用されません)。falseを指定した場合は、IPv4とIPv6の両方が利用可能になります。 既定値はfalseです。
Memo
Java版の場合Javaのシステムプロパティで指定します。