orbdコマンドは、クライアントがCORBA環境内のサーバーにある永続オブジェクトを透過的に検索して呼び出す場合に使用します。
説明
orbdコマンドを使用すると、クライアントがCORBA環境内のサーバーにある持続オブジェクトを検索して呼び出すことができます。orbdツールに含まれるサーバー・マネージャを使用すると、クライアントはCORBA環境でサーバー上にある永続オブジェクトを透過的に検索して呼び出すことができます。永続サーバーは、ネーム・サービスに永続オブジェクト参照を発行する際、サーバーのポート番号のかわりにorbdのポート番号をオブジェクト参照に含めます。永続オブジェクト参照のオブジェクト参照にorbdポート番号を含めることには、次のような利点があります。
ネーム・サービスにあるオブジェクト参照が、サーバーのライフ・タイムと無関係になる。たとえば、オブジェクト参照は、ネーム・サービスのサーバーが初めてインストールされたときはそのサーバーによって発行されますが、その後は、サーバーの起動または停止の回数にかかわらず、orbdは呼出し側クライアントに正しいオブジェクト参照を返します。
クライアントは一度だけネーミング・サービスのオブジェクト参照をルックアップする必要があるが、その後はサーバーのライフ・タイムによる変更とは無関係にこの参照を利用することができる。
orbdのサーバー・マネージャにアクセスするには、servertoolを使用してサーバーを起動する必要があります。このツールは、アプリケーション・プログラマが、永続サーバーの登録、登録解除、起動およびシャットダウンを行うためのコマンド行インタフェースです。「サーバー・マネージャ」を参照してください。
orbdを起動すると、ネーム・サービスも起動されます。後述の「ネーム・サービスの起動と停止」を参照してください。
orbdのオプション
必須ではないオプション
-port portorbdを起動する起動ポートを指定します。このポートで、orbdは永続オブジェクトに対する要求を受け取ります。このポートのデフォルト値は1049です。このポート番号は、持続Interoperable Object References (IOR)のポート・フィールドに追加されます。
-defaultdb directoryorbd永続格納ディレクトリorb.dbが作成されるベース・ディレクトリを指定します。このオプションを指定しなかった場合、デフォルト値は./orb.dbとなります。
-serverPollingTime millisecondsservertoolを使用して登録された永続サーバーが正常に動作していることをORBDがチェックする間隔を指定します。デフォルト値は1000ミリ秒です。millisecondsに指定する値は、有効な正の整数である必要があります。
-serverStartupDelay millisecondsservertoolを使用して登録された永続サーバーを再起動してから、位置転送の例外を送信するまでのorbdの待機時間を指定します。デフォルト値は1000ミリ秒です。millisecondsに指定する値は、有効な正の整数である必要があります。
-J optionJava仮想マシンに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)で、start orbd -ORBInitialPort 1050と入力します。
ポート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]キーを押します。