orbd は、クライアントから CORBA 環境のサーバーにある永続オブジェクトを透過的に検索して呼び出すために使用します。
関連項目: ネームサービス
orbd <options>
orbd ツールに含まれるサーバーマネージャーを使うと、クライアントは CORBA 環境でサーバー上にある永続オブジェクトを透過的に検索して呼び出すことができます。永続サーバーは、ネームサービスに永続オブジェクト参照を発行する際、サーバーのポート番号の代わりに OBRD のポート番号をオブジェクト参照に含めます。永続オブジェクト参照のオブジェクト参照に ORBD ポート番号を含めることには、次のような利点があります。
ORBD のサーバーマネージャーにアクセスするには、servertool を使用してサーバーを起動する必要があります。servertool は、アプリケーションプログラマが、永続サーバーの登録、登録解除、起動、およびシャットダウンを行うためのコマンド行インタフェースです。サーバーマネージャーの詳細については、このドキュメントの「サーバーマネージャー」を参照してください。
orbd を起動すると、ネームサービスも起動されます。ネームサービスについては、「ネームサービス」を参照してください。
ネームサービスは、CORBA オブジェクトにネーミングを可能にする CORBA サービスです。ネーミングは名前をオブジェクト参照にバインドすることにより可能になります。ネームバインディングはネームサービスに格納され、クライアントは名前を与えて目的のオブジェクト参照を取得できます。
ORBD は、クライアントまたはサーバーを実行する前に起動します。ORBD には、永続ネームサービスおよび一時ネームサービスが組み込まれています。これらはどちらも COS ネームサービスの実装です。
永続ネームサービスは、ネーミングコンテキストに対して永続性を提供します。つまり、この情報は、サービスの停止や起動後にも維持され、サービスに障害が発生した場合でも回復できます。ORBD を再起動すると、永続ネームサービスはネーミングコンテキストのグラフを復元し、すべてのクライアントとサーバーの名前のバインディングが保持されます。
下位互換性のため、旧バージョンの JDK に同梱されていた一時ネームサービスである tnameserv が、今回のリリースの J2SE にも同梱されています。一時ネームサービスでは、ネームサービスの実行中にのみネーミングコンテキストが保持されます。サービスが中断されると、ネーミングコンテキストは失われます。
-ORBInitialPort 引数は、orbd の必須のコマンド行引数で、ネームサービスが実行されるポートの番号を設定するために使われます。以下の説明では、Java IDL Object Request Broker Daemon 用にポート 1050 を使用できることを前提としています。Solaris ソフトウェアの使用時は、1024 より小さいポートでプロセスを開始する場合は、root ユーザーになる必要があります。このため、1024 または 1024 より大きいポートを使用することをお勧めします。
UNIX コマンドシェルで 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
ネームサービスを停止するには、適切なオペレーティングシステムコマンドを使用します。たとえば、Solaris では pkill orbd を使用し、orbd が実行されている DOS ウィンドウでは Ctrl+C キーを使用します。一時ネームサービスの場合は、サービスが終了されると、ネームサービスに登録された名前が消去される場合があります。Java IDL ネームサービスは、明示的に停止されるまで実行されます。
ORDB に含まれるネームサービスの詳細については、「ネームサービス」を参照してください。
ORBD のサーバーマネージャーにアクセスして永続サーバーを実行するには、servertool を使用してサーバーを起動する必要があります。servertool は、アプリケーションプログラマが、永続サーバーの登録、登録解除、起動、およびシャットダウンを行うためのコマンド行インタフェースです。servertool を使用してサーバーを起動する場合は、orbd が実行されている場所と同じポートとホストで起動する必要があります。サーバーを異なるポートで実行すると、ローカルコンテキスト用にデータベースに保存されている情報が無効になり、サービスが正しく動作しません。
デモ用のサンプルチュートリアルを使用し、チュートリアルの手順に従って、idlj コンパイラと javac コンパイラを実行します。サーバーマネージャーを実行するには、次の手順に従ってアプリケーションを実行します。
orbd を起動します。
UNIX コマンドシェルで orbd を起動するには、次のように入力します。
orbd -ORBInitialPort 1050
Windows の MS-DOS システムプロンプトでは、次のように入力します。
start orbd -ORBInitialPort 1050
1050 はネームサーバーを実行するポートです。-ORBInitialPort は必須のコマンド行引数です。Solaris ソフトウェアの使用時は、1024 より小さいポートでプロセスを開始する場合は、root ユーザーになる必要があります。このため、1024 または 1024 より大きいポートを使用することをお勧めします。
servertool を起動します。
Hello サーバーを起動するには、次のように入力します。
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 クライアントとして同一ホスト上で動作しているため、省略できます。ネームサーバーが別のホストで動作している場合は、IDL ネームサーバーが動作しているホストを -ORBInitialHost nameserverhost で指定します。
前回の手順と同様にネームサーバー (orbd) のポートを指定します (たとえば -ORBInitialPort 1050)。
サーバーマネージャーの操作が終了したら、ネームサーバー (orbd) と servertool を停止するか終了してください。
DOS プロンプトで orbd をシャットダウンするには、サーバーを実行しているウィンドウを選択して Ctrl + C キーを押します。UNIX シェルで orbd をシャットダウンするには、プロセスを検出して終了 (kill) します。サーバーを明示的に停止するまでは、呼び出し待機状態が続きます。
servertool をシャットダウンするには、quit
と入力し、キーボードの Enter キーを押します。