15.3.2 oadutilの使用によるオブジェクトの登録

oadutilコマンドを使用すると,コマンドラインから,またはスクリプト内からオブジェクトインプリメンテーションを登録できます。パラメタは,インタフェース名とオブジェクト名,サービス名,またはPOA名,これらに加えてインプリメンテーションを起動する実行可能ファイルへのパス名です。活性化ポリシーを指定しないと,デフォルトとしてシェアードサーバポリシーが使用されます。インプリメンテーションを記述しておき,開発フェーズとテストフェーズでそのインプリメンテーションを手動で起動できます。インプリメンテーションを配置する準備が整ったら,oadutilを使用するだけで,OADにそのインプリメンテーションを登録できます。

オブジェクトインプリメンテーションを登録する場合は,そのインプリメンテーションオブジェクトを構築した時に使用したのと同じオブジェクト名を使用してください。グローバルスコープを持った,名前付きオブジェクトだけをOADに登録できます。

oadutil regコマンドの構文は次のとおりです。

構文

oadutil reg [options]

oadutil regコマンドを使用するには,ネットワークの少なくとも一つのホストでoadプロセスを起動しなければなりません。

oadutil regコマンドのオプションには表15-3のコマンドライン引数を指定できます。

表15-3 oadutil regコマンドのオプション

オプション説明
必須-i <interface_name>特定のIDLインタフェース名を指定します。一度に指定できるオプションは,-i,-r,-s,-poaのうち一つだけです。
リポジトリID指定の詳細については,「15.3 オブジェクト活性化デーモンユーティリティの使用」の「インタフェース名からリポジトリIDへの変換」を参照してください。
-r < repository_id>特定のリポジトリIDを指定します。一度に指定できるオプションは,-i,-r,-s,-poaのうち一つだけです。
-s <service name>特定のサービス名を指定します。一度に指定できるオプションは,-i,-r,-s,-poaのうち一つだけです。
-poa <poa_name>このオプションは,オブジェクトインプリメンテーションの代わりにPOAを登録する場合に使用してください。一度に指定できるオプションは,-i,-r,-s,-poaのうち一つだけです。
-o <object_name>特定のオブジェクトを指定します。これは,インタフェース名またはリポジトリIDがコマンド文で指定された場合だけ使用できます。このオプションは,-s引数または-poa引数を使用している場合には適用できません。
-cpp <file name to execute>-o/-r/-s/-poa引数に一致するオブジェクトを生成し登録しなければならない実行可能ファイルの完全パス名を指定します。-cpp引数で登録されたアプリケーションは,スタンドアロン実行可能ファイルでなければなりません。
-java <full class name>メインルーチンを含むJavaクラスの完全名を指定します。このアプリケーションは,-o/-r/-s/-poa引数に一致するオブジェクトを生成し登録しなければなりません。-java引数で登録されたクラスは,コマンドvbj <full_classname>で実行されます。
任意指定-host <OAD host name>OADを実行中である特定のリモートホストを指定します。
-verboseバーボースモードをオンにして,メッセージがstdoutに出力されるようにします。
-versionこのツールのバージョンを出力します。
-d <referenceData>活性化時にサーバに渡すリファレンスデータを指定します。
-a arg1
-a arg2
生成された実行可能ファイルにコマンドライン引数として渡す引数を指定します。複数の-a (arg)パラメタを使用して引数を渡せます。これらの引数は,生成された実行可能ファイルを生成するためにプロパゲートされます。
-e env1
-e env2
生成された実行可能ファイルに渡す環境変数を指定します。複数の-e (env)パラメタを使用して引数を渡せます。これらの引数は,生成された実行可能ファイルを生成するためにプロパゲートされます。
-p {shared|unshared}生成されたオブジェクトの活性化ポリシーを指定します。デフォルトポリシーはSHARED_SERVERです。
shared指定時は,任意のオブジェクトの複数のクライアントが同じインプリメンテーションを共用します。OADが一度に活性化するサーバは一つだけです。
unshared指定時は,任意のインプリメンテーションの一つのクライアントだけが,活性化されたサーバにバインドされます。複数のクライアントが同じオブジェクトインプリメンテーションにバインドしたがると,クライアントアプリケーションごとに別々のサーバが活性化されます。クライアントアプリケーションが切断または終了すると,対応するサーバが終了します。
<この項の構成>
(1) 例1:リポジトリIDの指定
(2) 例2:IDLインタフェース名の指定
(3) OADへのリモート登録

(1) 例1:リポジトリIDの指定

次に示すコマンドは,OADにBorland Enterprise Server VisiBrokerプログラムfactoryを登録します。これは,リポジトリIDがIDL:ehTest/Factory:1.0(インタフェース名ehTest::Factoryに対応)のオブジェクトがリクエストされると活性化されます。活性化対象のオブジェクトのインスタンス名はReentrantServerであり,その名前も,生成された実行可能ファイルにコマンドライン引数として渡されます。このサーバにはアンシェアードポリシーが指定されているので,リクエスト元のクライアントが生成されたサーバとのコネクションを切断すると,サーバが終了します。

C++の場合

prompt> oadutil reg -r IDL:ehTest/Factory:1.0   ¥
       -o ReentrantServer -cpp /home/developer¥
       /Project1/factory_r -a ReentrantServer  ¥
       -p unshared

Javaの場合

prompt> oadutil reg -r IDL:ehTest/Factory:1.0  ¥
       -o ReentrantServer -java factory_r     ¥
       -a ReentrantServer -p unshared

上記の例では,指定されたJavaクラスがCLASSPATHになければなりません。

(2) 例2:IDLインタフェース名の指定

次に示すコマンドは,OADにBorland Enterprise Server VisiBrokerクラスServerを登録します。この例では,指定されたクラスは,リポジトリIDがIDL:Bank/AccountManager:1.0(インタフェース名IDL名Bank::AccountManagerに対応)で,インスタンス名がCreditUnionのオブジェクトを活性化しなければなりません。サーバはアンシェアードポリシーで起動されるので,リクエスト元のクライアントがコネクションを切断すると,サーバは確実に終了します。

サンプル(Java)

prompt> oadutil reg -i Bank::AccountManager -o CreditUnion ¥
       -java Server -a CreditUnion -p unshared -e DEBUG=1

上記の例では,指定されたJavaクラスがCLASSPATHになければなりません。
上記の登録は,リクエストされたサーバの生成時に次のコマンドを実行するようOADに指示します。

vbj -DDEBUG=1 Server CreditUnion

(3) OADへのリモート登録

リモートホストのOADにインプリメンテーションを登録するには,oadutil regに-host引数を指定してください。

UNIXシェルからWindowsのOADへのリモート登録の実行例を次に示します。¥記号をoadutilに渡す前にシェルに解釈させないようにするには,二重¥記号(¥¥)が必要です。

prompt> oadutil reg -r IDL:Library:1.0 Harvard             ¥
       -cpp c:¥¥vbroker¥¥examples¥¥library¥¥libsrv.exe    ¥
       -p shared -host 100.64.15.198