orbd
コマンドは、クライアントがCORBA環境内のサーバーにある永続オブジェクトを透過的に検索して呼び出す場合に使用します。
説明
orbd
コマンドを使用すると、クライアントがCORBA環境内のサーバーにある持続オブジェクトを検索して呼び出すことができます。orbd
ツールに含まれるサーバー・マネージャを使用すると、クライアントはCORBA環境でサーバー上にある永続オブジェクトを透過的に検索して呼び出すことができます。永続サーバーは、ネーム・サービスに永続オブジェクト参照を発行する際、サーバーのポート番号のかわりにorbd
のポート番号をオブジェクト参照に含めます。永続オブジェクト参照のオブジェクト参照にorbd
ポート番号を含めることには、次のような利点があります。
ネーム・サービスにあるオブジェクト参照が、サーバーのライフ・タイムと無関係になる。たとえば、オブジェクト参照は、ネーム・サービスのサーバーが初めてインストールされたときはそのサーバーによって発行されますが、その後は、サーバーの起動または停止の回数にかかわらず、orbd
は呼出し側クライアントに正しいオブジェクト参照を返します。
クライアントは一度だけネーミング・サービスのオブジェクト参照をルックアップする必要があるが、その後はサーバーのライフ・タイムによる変更とは無関係にこの参照を利用することができる。
orbd
のサーバー・マネージャにアクセスするには、servertool
を使用してサーバーを起動する必要があります。このツールは、アプリケーション・プログラマが、永続サーバーの登録、登録解除、起動およびシャットダウンを行うためのコマンド行インタフェースです。「サーバー・マネージャ」を参照してください。
orbd
を起動すると、ネーム・サービスも起動されます。後述の「ネーム・サービスの起動と停止」を参照してください。
orbdのオプション
必須ではないオプション
-port port
orbd
を起動する起動ポートを指定します。このポートで、orbd
は永続オブジェクトに対する要求を受け取ります。このポートのデフォルト値は1049です。このポート番号は、持続Interoperable Object References (IOR)のポート・フィールドに追加されます。
-defaultdb directory
orbd
永続格納ディレクトリorb.db
が作成されるベース・ディレクトリを指定します。このオプションを指定しなかった場合、デフォルト値は./orb.db
となります。
-serverPollingTime milliseconds
servertool
を使用して登録された永続サーバーが正常に動作していることをORBDがチェックする間隔を指定します。デフォルト値は1000ミリ秒です。milliseconds
に指定する値は、有効な正の整数である必要があります。
-serverStartupDelay milliseconds
servertool
を使用して登録された永続サーバーを再起動してから、位置転送の例外を送信するまでのorbd
の待機時間を指定します。デフォルト値は1000ミリ秒です。milliseconds
に指定する値は、有効な正の整数である必要があります。
-J option
Java仮想マシンにoption
を渡します(option
は、Javaアプリケーション起動ツールのリファレンス・ページに記載されているいずれかのオプション)。たとえば、-J-Xms48m
と指定すると、スタートアップ・メモリーは48Mバイトに設定されます。「java」を参照してください。
ネーム・サービスの起動と停止
ネーム・サービスは、名前をオブジェクト参照にバインドすることで、CORBAオブジェクトに名前を付けることができるCORBAサービスです。ネーム・バインディングはネーム・サービスに格納でき、クライアントは名前を付けて目的のオブジェクト参照を取得できます。
orbd
は、クライアントまたはサーバーを実行する前に起動します。orbd
コマンドには、永続ネーム・サービスおよび一時ネーム・サービスが組み込まれています。これらはどちらもCOSネーム・サービスの実装です。
持続ネーム・サービスは、ネーミング・コンテキストに対して持続性を提供します。つまり、この情報は、サービスの停止や起動後にも維持され、サービスに障害が発生した場合でも回復できます。ORBDを再起動すると、持続ネーム・サービスはネーミング・コンテキストのグラフを復元し、すべてのクライアントとサーバーの名前のバインディングが保持されます。
下位互換性を保つために、以前のリリースのJDKに同梱されていた一時ネーム・サービスであるtnameserv
が、今回のリリースのJava SEにも同梱されています。一時ネーム・サービスでは、ネーム・サービスの実行中にのみネーミング・コンテキストが保持されます。サービスが中断されると、ネーミング・コンテキストのグラフは失われます。
-ORBInitialPort
引数は、orbd
の必須のコマンド行引数で、ネーム・サービスが実行されるポートの番号を設定するために使用されます。次の説明では、Java IDL Object Request Broker Daemon用にポート1050を使用できることを前提としています。Oracle Solarisソフトウェアを使用する場合、1024より小さいポート上でプロセスを開始するには、rootユーザーになる必要があります。このため、1024以上のポート番号を使用することをお薦めします。必要であれば別のポートに変更してください。
Oracle Solaris、LinuxまたはOS Xコマンド・シェルからorbd
を起動するには、次のように入力します。
orbd -ORBInitialPort 1050&
WindowsのMS-DOSシステム・プロンプトでは、次のように入力します。
start orbd -ORBInitialPort 1050
これでorbd
が実行され、サーバーとクライアントのアプリケーションを実行できるようになります。クライアントとサーバーのアプリケーションは、実行時に、ネーム・サービスが実行されているポートの番号(必要な場合はさらにマシン名)を認識している必要があります。これを実現する1つの方法は、次のコードをアプリケーションに追加することです。
Properties props = new Properties(); props.put("org.omg.CORBA.ORBInitialPort", "1050"); props.put("org.omg.CORBA.ORBInitialHost", "MyHost"); ORB orb = ORB.init(args, props);
この例では、ネーム・サービスはホストMyHost
のポート1050上で実行されています。別の方法として、コマンド行からサーバーまたはクライアントのアプリケーションを実行するときに、ポート番号またはマシン名あるいはその両方を指定する方法もあります。たとえば、次のコマンド行を使用して、HelloApplication
を起動します。
java HelloApplication -ORBInitialPort 1050 -ORBInitialHost MyHost
ネーム・サービスを停止するには、適切なオペレーティング・システム・コマンドを使用します。たとえば、Oracle Solarisではpkill
orbd
を使用し、orbd
が実行されているDOSウィンドウではCtrl+Cキーを使用します。一時ネーム・サービスが原因でサービスが終了されると、ネーム・サービスに登録された名前が消去される場合があります。Java IDLネーム・サービスは、明示的に停止されるまで実行されます。
サーバー・マネージャ
orbd
のサーバー・マネージャにアクセスして永続サーバーを実行するには、servertool
を使用してサーバーを起動する必要があります。このツールは、アプリケーション・プログラマが、永続サーバーの登録、登録解除、起動およびシャットダウンを行うためのコマンド行インタフェースです。servertool
を使用してサーバーを起動する場合は、orbd
が実行されている場所と同じポートとホストで起動する必要があります。サーバーを異なるポートで実行すると、ローカル・コンテキスト用にデータベースに格納されている情報が無効になり、サービスが正しく動作しません。
この例では、チュートリアルの手順に従って、idlj
コンパイラとjavac
コンパイラを実行します。orbd
のサーバー・マネージャを実行するには、次の手順に従ってアプリケーションを実行します。
orbd
を起動します。
Oracle Solaris、LinuxまたはOS Xコマンド・シェルで、orbd -ORBInitialPort 1050
と入力します。
MS-DOSシステム・プロンプト(Windows)で、s
tart orbd -ORBInitialPort 105
0
と入力します。
ポート1050は、ネーム・サーバーを実行するポートです。-ORBInitialPort
オプションは、必須のコマンド行引数です。Oracle Solarisソフトウェアを使用する場合、1024より小さいポート上でプロセスを開始するには、rootユーザーになる必要があります。このため、1024以上のポート番号を使用することをお薦めします。
servertool
を起動します(例: servertool -ORBInitialPort 1050
)。
前回の手順と同様にネーム・サーバー(orbd
)のポートを指定します(例: -ORBInitialPort 1050
)。servertool
は、ネーム・サーバーと同じポート上で起動する必要があります。
servertool
コマンド行インタフェースで、servertool
プロンプトからHello
サーバーを起動します。
servertool > register -server HelloServer -classpath . -applicationName HelloServerApName
servertool
によってサーバーが登録され、そのサーバーにHelloServerApName
という名前が割り当てられ、登録されているすべてのサーバーのリストとともにサーバーIDが表示されます。別の端末ウィンドウまたはプロンプトからクライアント・アプリケーションを実行します。
java HelloClient -ORBInitialPort 1050 -ORBInitialHost localhost
この例の-ORBInitialHost localhost
は、ネーム・サーバーがHello
クライアントとして同一ホスト上で動作しているため、省略できます。ネーム・サーバーが別のホストで稼働している場合は、-ORBInitialHost nameserverhost
オプションを使用してIDLネーム・サーバーが稼働しているホストを指定します。前回の手順と同様にネーム・サーバー(orbd
)のポートを指定します(たとえば-ORBInitialPort 1050
)。orbd
のサーバー・マネージャでの試みが終了したら、ネーム・サーバー(orbd
)とservertool
をシャットダウンまたは終了します。MS-DOSプロンプトからorbd
をシャットダウンするには、サーバーを実行しているウィンドウを選択して[Ctrl]+[C]を押して停止します。
Oracle Solarisシェルからorbd
をシャットダウンするには、プロセスを検出して、kill
コマンドで終了します。サーバーを明示的に停止するまでは、呼出し待機状態が続きます。servertool
を停止するには、quitと入力し、[Enter]キーを押します。